我有一個表的街道地址數據,包含約1400萬條記錄。我試圖尋找併爲此目的,我創建了幾個索引。我正在運行查詢是:MySQL的查詢和索引
SELECT *
from ADDRESSES
WHERE number_first = 538
AND street_name IN ('COLL', 'COLLA', 'COLLABY HILL', 'COLLACE',
'COLLAERY','COLLANDA','COLLANILLING','COLLARD','COLLARE',
'[plus about another 100+ street names]')
AND locality_name in ('MERRIMAC', 'ST ANDREWS', 'WARWICK', 'HORSHAM',
'WARNERTOWN','BRUNSWICK','FAIRY MEADOW','RUSSELL VALE', 'CARRAMAR',
'[plus about another 500+ locality names]')
我已經創建STREET_NAME上和number_first索引如下:(street_name
(4),number_first
)
作爲LOCALITY_NAME也被包括在該查詢中,我創建另一個索引如下: (number_first
,street_name
,locality_name
)
運行解釋其對SELECT查詢總是選擇的第一個索引,而不是第二個。如何修改我的查詢/索引,以便我可以根據street_name,locality_name和number_first進行搜索。
PS:我使用MySQL的版本是45年5月5日
爲什麼你想要使用特定的索引?你確定你比數據庫引擎更好的知道它會導致更快的執行嗎?有時使用索引比不使用它慢。 –
我只是想明白,爲什麼具有street_name和locality_name的索引被覆蓋,只有部分street_name – user2260040
我懷疑number_first將有較小的價值變化。可能會有一個新的'street_name,locality_name,number_first'索引。 – ajreal