什么样的索引将有助于加快我的加入速度



我有两个表,meta(一个小表)和metastus。我在ipaddr列上有索引,我将使用它来加入它们。

我的查询是

select m.ipaddr, m.machineclass
from meta m
join metastatus s on s.ipaddr = m.ipaddr
where m.machineclass = 'atm'
limit 1000;

这是计划。

显然,没有使用转移上的ipaddr索引。我想得到一些推荐。在这种情况下添加索引有帮助吗?或者我可以做些什么来加快查询速度?

更新metastus上的ipaddr索引是聚集索引。我觉得这很重要?

我认为这与索引是否集群无关。

为了使此查询有效工作,您应该在meta表中创建复合索引(machineclass, ipaddr)

CREATE INDEX meta_machineclass_ipaddr_idx (machineclass, ipaddr);

只要machineclass='atm'具有高选择性(或者小于10%的所有行是'atm'类),这就应该很好地工作。

您的元表应该在(machineclass)上有一个索引来限定where子句。元状态应该在(ipaddr)上,正如您已经指出的那样。

最新更新