超過一千萬行,慢得令人痛苦。目前使用 'LIKE' 來計算點擊次數:
SELECT COUNT(*) FROM `table` WHERE `job` LIKE '%sales%' AND `location` LIKE '%New York%'
我是否正確地認為我想要:
(1) 對每個欄位應用 FULLTEXT 索引
(2) 使用 CONTAINS 陳述句來提高速度:
SELECT COUNT(*) FROM `table` WHERE contains('location', '"New York"') and contains ('job',"sales")
這會產生與我最初的 LIKE 查詢相同的結果嗎?
這會快很多倍,唯一的缺點是資料庫存盤大小的巨大增加嗎?
示例:我想統計這樣的資料:“sales manager”、“Buffalo, New York”
uj5u.com熱心網友回復:
將此索引添加到您的表中:
FULLTEXT (location, job)
使用這個WHERE子句:
WHERE MATCH(location, job) AGAINST("sales manager new york")
它將作業得更快。
更多的
如果您有很多帶有“文本”的列,并且搜索可能包括其中任何一個或全部的內容,那么添加一個將所有文本集中在一起的額外列可能會更好。然后在該列上創建一個FULLTEXT索引,并MATCH針對該列創建一個索引。
請注意,FULLTEXT它不處理數字或不等式。它也不處理“短”詞或“停止”詞。
uj5u.com熱心網友回復:
問:我是否正確地認為我想將 FULLTEXT 索引應用于每個欄位并用類似的東西替換查詢以提高速度?
A:是的,您在添加索引以提高性能方面是正確的。
問:我認為這會產生與我的 LIKE 查詢相同的結果是否正確?
答:我不確定,因為我在 MySQL 中找不到任何與 CONTAINS 相關的子句。但請將此作為全文索引的解決方案。
問:我是否認為這會快很多倍,唯一的缺點是資料庫存盤大小的巨大增加?
A:嗯,老實說,這不是一個好主意。因為文本是不可預測的,所以使用文本作為索引并不是一個好主意。
不管我的想法如何,你可能已經選擇了你的想法。但我希望您能找到另一列以降低索引風險和成本。謝謝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450589.html
上一篇:是否有可能使用絕對路徑進行htaccess301重定向?
下一篇:估計行數SQL
