索引在加入和哪里



给定下一个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上的索引是正确的选择。在此版本中,索引中列的顺序并不重要。

相关内容

  • 没有找到相关文章

最新更新