我有两个表:表A和tableB的 TableA中有上百万的记录和tableB的大约有1000条记录使用多个指数的连接条件甲骨文
Table A {
aid
city, (city is indexed)
state,
X,
Y
}
Table B {
bid,
city,
state
}
现在我的查询是
SELECT X, Y, COUNT(*) FROM A,B
WHERE A.city = B.city
and A.state=B.state
group by X,Y
这查询运行速度非常慢。然而,当我们只参加城市时,一切都很快就开始了。 现在我的查询是
SELECT X, Y, COUNT(*) FROM A,B
WHERE A.city = B.city
group by X,Y
所以我而在第二种情况下,它用的是城市索引的查询计划不使用索引去解释计划,并在第一种情况下(慢)。我试图在表中添加状态索引,这没有像预期的那样有帮助。此外,我试图使用索引提示像/ * + INDEX(A,city_idx)* /选择后没有什么帮助。你能帮我解决这个问题吗?
你应该尝试添加'use_nl(b a)' –
你能告诉我们这些计划吗? –
在A(城市,州)上添加复合索引将是一个解决方案,但问题是好的。如果条件'A.city = B.city'导致索引使用嵌套循环,同样的情况应该发生在'A.city = B.city和A.state = B.state' –