php - 对于此 MYSQL 搜索查询,还有其他更快的执行方法吗?

标签 php mysql

我的 mysql 数据库中有 100K 数据,我想在其中搜索查询。我删除了停用词并将其拆分为关键字数组并存储在变量中,即 $key[0],$key[1],$key[2]。我正在使用以下查询

SELECT * 
FROM   `table` 
WHERE (`column` LIKE '%$key1%' 
     OR `column` LIKE '%$key2%' 
     OR `column` LIKE '%$key3%');

还有其他更快的方法可以做到这一点吗?

最佳答案

加快此类查询速度的唯一方法是使用全文搜索。 LIKE '%string%' 无法使用普通索引进行优化,因为它们使用依赖于匹配正在搜索的字符串前缀的 B 树。由于您的模式以通配符开头,因此索引没有帮助。

另一个解决方案是标准化您的数据库。不要将关键字全部放在一列中,而是将它们放在另一个表中,该表有一个外键,每个 FK+关键字占一行。然后您可以使用连接来匹配关键字。

此外,您在列名称周围使用了错误类型的引号。它们应该是反引号,而不是单引号。

关于php - 对于此 MYSQL 搜索查询,还有其他更快的执行方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17834634/

相关文章:

php - 在 PHP 中创建 SEO 链接

java - 计算平均值的简单数学公式

javascript - Facebook 社交插件无法在 PHP 中使用 JavaScript 分页?

sql - 在 mysql 中,通过表的其中一个列中的不同值仅获取表中行的有效方法是什么?

mysql - 对两个 case 表达式的乘法求和

mysql - SQL 将两个表与第三个表连接起来

php - AWS SDK CloudSearch 分页

php - 如何将文件上传到公共(public)html文件夹到服务器并保存到mysql数据库的路径?

mysql - 当值中有特殊字符时,卡在获取不同记录中

mysql - 当搜索字符串中有+号时,Sql where 出现问题