Mysql多次LIKE与“AND”

时间:2017-01-06 23:09:04

标签: php mysql

我遇到LIKE运营商的问题。我创建的查询正在搜索类似的东西,例如,我搜索街道34:

WHERE address LIKE '%Street%' AND address LIKE '%34%' 

问题是,如果我写的地址太长,MySQL查询速度会慢下来。有没有更快的解决方案?我知道有运营商REGEXPIN,但他们使用OR进行搜索,但我需要搜索BY AND

ps:为什么我要写多个LIKE?因为有些人可能不会说“街34”而是“34街”。

2 个答案:

答案 0 :(得分:0)

添加一个搜索表,其中包含id和varchar字段。

将每个独特的单词放入其中。

制作一个链接表,将单词与其地址相关联。

表格地址

Id address
1  34 bakersfield
2  steve irwing street 34

表格

  Id  word
  1  34
  2  bakersfield
  3  steve
  4  Irwing
  5  Street

链接表

   Street_id  word_id
   1.              1
   1.              2
   2.              3
   2.              4
   2.              5
   2.              1

然后你所要做的就是在哪里和加入。

您也可以在查询中使用。

另一种方法也可以是启用全文索引,它在屏幕后面执行相同(但更好)的操作。

答案 1 :(得分:0)

[City, County (if exists), State, Country, Population, Inception Date, Inception Type]无法从索引中受益,这意味着您要对数据库进行全表扫描。你已经注意到这很慢了。

您是否看过MySQL全文搜索?如果你使用的是myisam引擎,这会大大加快速度:http://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html