目前,我有這個疑問如何優化與通配符查詢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