我有一個有很多條目的dockets表。我已經爲密鑰類型爲「MUL」的條目的外鍵添加了一個索引。但查詢仍然運行緩慢,因爲我必須檢查每行的2列以檢查它們是否包含4個關鍵字中的任何一個。這意味着我有8 NOT LIKE子句這個查詢:加快與很多像條款查詢
SELECT `entries`.* FROM `entries`
WHERE `entries`.`docket_id` IN (1, ...)
AND (column1 NOT LIKE '%Keyword1%' AND column2 NOT LIKE '%Keyword1%')
AND (column1 NOT LIKE '%Keyword2%' AND column2 NOT LIKE '%Keyword2%')
AND (column1 NOT LIKE '%Keyword3%' AND column2 NOT LIKE '%Keyword3%')
AND (column1 NOT LIKE '%Keyword4%' AND column2 NOT LIKE '%Keyword4%')
還有什麼我可以做這個查詢加快,除了添加索引外鍵,這點我已經做了。
通配符likke鬥爭,這是MyISAM數據?可能值得添加全文索引? – exussum
如果你在> 5.6你可以在innodb上添加FULLTEXT也可以。但是你真的需要所有這些嗎?也許db標準化可以幫助 – Mihai
@exussum我使用的InnoDB版本是5.6。 – Donato