哪个查询更快,为什么对于表中有 1M 记录的数据库?如何优化查询? 第一个:
SELECT id,column1,column2 FROM `table1` WHERE MATCH(column1)
AGAINST('string1 string2 string3 ' in boolean mode) ORDER BY column2 ASC LIMIT 10
第二个:
SELECT id,column1,column2 FROM `table1` WHERE column1 LIKE %string1%
OR column1 LIKE %string2% OR column1 LIKE %string3% OR column2 LIKE %string1%
OR column2 LIKE %string2% OR column2 LIKE %string3% OR column3 LIKE %string1% OR
column3 LIKE %string2% OR column3 LIKE %string3% ORDER BY column2 ASC LIMIT 10
最佳答案
匹配是全文搜索。如果您为 MySQL 创建全文搜索索引,它将比 LIKE '%...%' 快得多,因为在这种情况下将没有索引。
'%...%' 上不能有任何索引的原因是因为在字符串的每个字母上创建索引根本不够快。
这两个查询也有不同的功能,全文索引扫描单词并且只对单词可用。你不能用“match against('mi' in boolean mode)”来搜索字符串“emil”。那是行不通的。 当然这样也行。
关于php - 两个不同查询之间的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9895573/