给出下一个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)
之上创建索引,以提高效果?
非常感谢!
答案 0 :(得分:1)
对于此查询:
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
上的索引是正确的。在这个版本中,索引中列的顺序并不重要。