我有一个表的街道地址数据,包含约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