php - Mysql 多个 LIKE 与 "AND"

标签 php mysql

我对 LIKE 运算符有疑问。我创建的查询正在搜索类似的内容,例如,我搜索 Street 34:

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

问题是,如果我写的地址太长,MySQL 查询就会变慢。有没有可能更快的解决方案?我知道有运算符 REGEXPIN 但它们使用 OR 进行搜索,但我需要按 AND 进行搜索。

ps:为什么我要写多个LIKE?这是因为有些人发送的消息可能不是“Street 34”,而是“34 Street”。

最佳答案

添加一个搜索表,其中包含 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

然后您所要做的就是定位并加入。

您还可以在查询中使用 where。

另一种选择是启用全文索引,其作用相同(但更好),但在屏幕后面。

关于php - Mysql 多个 LIKE 与 "AND",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41515828/

相关文章:

php - mock 似乎无法正常工作

php - 如何在 Drupal 8 中使用带有自定义页面的可打印模块

php - “对私有(private)方法的 fatal error 调用”但方法受到保护

mysql - UPDATE vs COUNT vs SELECT 性能

mysql - Joomla Jdatabase select 语句不工作

php - 如何将 MySQL 的 PDO 对象绑定(bind)到 TEXT 类型的字段?

javascript - Laravel 5 中的空可重复字段

php - 如何查看MySQL查询错误详情?

c# - 如果数据库尚不存在则创建

php - 如何在 jquery 中编写 PHP 代码以从 mysql 数据库检索值?