假设以下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)
?
提前谢谢!!!
答案 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。 “行少得多”多少钱? 返回的行数量很多,使用索引就不太好了。