我有两张桌子,一张小桌子,一张大桌子。我在ipaddr列上有索引,我将使用它来加入它们。
我的疑问是
select m.ipaddr, m.machineclass
from meta m
join metastatus s on s.ipaddr = m.ipaddr
where m.machineclass = 'atm'
limit 1000;这是计划。
显然,不能使用转移瘤的ipaddr指数。我想得到一些建议。在这种情况下添加索引会有帮助吗?或者我能做些什么来加速查询呢?
更新:转移瘤的ipaddr指数是聚集指数。我觉得这很重要?
发布于 2014-09-10 02:37:19
我不认为这与你的索引是否被聚集有任何关系。
要使此查询高效工作,应在(machineclass, ipaddr)表中创建复合索引meta:
CREATE INDEX meta_machineclass_ipaddr_idx (machineclass, ipaddr);只要machineclass='atm'具有很高的选择性(或者所有行中的10%都是'atm'类),这就应该工作得很好。
发布于 2014-09-10 02:25:40
元表应该有一个索引on (machineclass)来限定where子句。如您已经指出的,元状态应该具有on (ipaddr)。
https://stackoverflow.com/questions/25756262
复制相似问题