【发布时间】:2016-12-21 12:56:29
【问题描述】:
给定下一条 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))以提高性能是否有意义?
非常感谢!
【问题讨论】:
-
这没有意义。优化器会将 WHERE 条件推送到基表,并且只会在执行任何联接之前读取具有“正确”年份的行。您在两个表中都有关于“年份”的索引吗?这会有所帮助。
标签: sql oracle11g sqlperformance