2013-01-21 91 views
0

我有2列MySQL的加快搜索查詢

 
Id INT(4) PK autoincrement 
Description VARCHAR(250) 
(and more columns) 

此表包含500.000記錄,是InnoDB表的文章表。 現在我想尋找這樣的文章:

SELECT COUNT(*) FROM article (description like '%cannon%');

這需要幾乎一秒鐘執行..

我能來,使這個更快?

我已經alread上的說明列的索引

+0

有幾件事情,你可以做,一個是添加主鍵到表中以確保它可以正確編制索引,然後在表上添加索引以加快查詢速度。選擇COUNT(*)FROM文章WHERE描述LIKE'%cannon%';另外, – DarkMantis

+2

描述索引不起作用 – ajreal

+3

'like'%cannon%''殺死索引。 –

回答

1

查詢與like '%cannon%'非常難以優化。不,索引不能幫助你。也許全文搜索可以幫助你。

+0

我很害怕這個,thx – Ruutert

1

你應該考慮在說明中添加全文索引:

http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html

然後用:

SELECT 
    COUNT(*) 
FROM article 
WHERE MATCH (description) AGAINST ('cannon' WITH QUERY EXPANSION); 
+0

存儲引擎是innodb – ajreal

+0

http://blogs.innodb.com/wp/ 2011/12/innodb-full-text-search-in-mysql-5-6-4/ – povilasp

+0

親愛的,全文搜索的支持是5.6以上,但是你粘貼的文檔爲5.0 – ajreal