0
我有一個簡單的查詢:爲什麼不使用索引?
SELECT id
FROM logo
WHERE (`description` LIKE "%google%" AND `active` = "y")
ORDER BY id ASC
表logo
(MyISAM的)由約30字段與它2402024行形成。 字段description
是一個varchar(255)非空。 領域active
是一個ENUM( 'Y', 'N'),這些指標不空 基數是:
`active`: BTREE Card. 2
`description`: BTREE Card. 200168
EXPLAIN的查詢返回這樣的:
select_type: SIMPLE
table: logo
type: ALL
possible_keys: active
key: NULL
key_len: NULL
ref: NULL
rows: 2402024
Extras: Using where
我想知道爲什麼查詢不使用description
索引以及如何優化表格,以便此查詢在沒有全表掃描的情況下順利運行
已經優化了表格並檢查了錯誤..
sql引擎只能使用'starts-with'索引,所以'google%'將使用索引。在字段中查找子字符串會強制引擎進行全表掃描。 – rene
無論如何,我可以修改表加快查詢?也許分區? – Fabrizio
你最好用全文搜索的東西... http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html – rene