与过滤器连接的索引

时间:2016-11-26 19:16:25

标签: sql indexing oracle11g left-join

假设以下SQL伪代码:

select ... from A join B
on A.serial=27 and B.serial=34 and A.id=B.id;

鉴于表格很大,我需要为serial使用索引,显然对于连接条件A.id=B.id。理想情况下,我需要在连接之前应用过滤器,因为过滤器的结果比过滤一个表的行少得多,然后加入,然后过滤第二个。

我的问题是:哪种指数组合适合这种情况?可能是A和B上的两个复合形式(serial id)

提前谢谢!!!

1 个答案:

答案 0 :(得分:1)

这是Oracle,而不是MySQL 出于连接目的,您不需要id列的索引,但是 -
将ID列定义为主键是个好主意,这会隐式创建唯一索引

您需要serial

上的索引
Create index A_IX_SERIAL on A (SERIAL);
Create index B_IX_SERIAL on B (SERIAL);

P.S。 “行少得多”多少钱? 返回的行数量很多,使用索引就不太好了。