目前,我有这个疑问如何优化与通配符查询WHERE与LIMIT子句
SELECT field1 FROM table1
WHERE field1 LIKE '%foo%'
LIMIT 20
它是更有效的有以下查询?
SELECT field1 FROM table1
WHERE
field1 LIKE 'foo' OR
field1 LIKE 'foo%' OR
field1 LIKE '%foo%'
LIMIT 20
版本的SQL(对不起,我应该早点mentionned)一个共享的主机
的MySQL 5.5 InnoDB引擎。有了这个配置我不能使用FULLTEXT指数(全文索引可从MySQL的InnoDB的V5.6)
MY具体目的
我需要找到20条记录包含字。大多数时候,这个词将匹配在场上完全值,即见下表:
| **field1** | **search** |
| record1 | foo |
| record2 | fooziness |
| record3 | other1 |
| record4 | foo |
| record5 | other2 |
| ... | ... |
我知道'word'
OR 'word%'
使用INDEX而最后'%word%'
没有。
将查询优化器首先尝试找到'word'
OR 'word%'
记录并保存低效搜索'%word%'
如果20 'word'
被发现?
为什么你不测试它并检查解释计划? [** MySQL **](http://dba.stackexchange.com/questions/15371/how-do-i-get-the-execution-plan-for-a-view) –
btw你的第二个查询不是好的。您必须编写'field1 ='foo'或field1 LIKE'foo%'或field1 LIKE'%foo%' –
我还没有足够的数据在表中:-) – gentleboy