给定下一个SQL语句:
Select *
from A join B
on A.id1=B.id1 and
A.id2=B.id2
where A.year=2016
and B.year=2016
知道表A
比表B
小得多,因此我首先需要数据库逐年访问A
表,然后加入,然后按年度过滤B
表,我的问题是:
在B
上创建索引(例如(id1,id2,year)
)以提高性能是有意义的吗?
非常感谢!
用于此查询:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2
where A.year = 2016 and B.year = 2016;
我建议在A(year, id1, id2)
和B(id1, id2, year)
上建议索引。
您可能还将查询写为:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2 and A.year = B.year
where A.year = 2016;
您问题的答案是"是",而B
上的索引是正确的选择。在此版本中,索引中列的顺序并不重要。