【发布时间】:2014-04-28 10:24:49
【问题描述】:
如果我在非索引列上有一个联接,在索引列的联接中添加另一个条件会有帮助吗?
例如 - 存在两个表 Table1 和 Table2。 tran_date 列已编入索引,但 tran_id 未编入索引。第二个代码会比第一个运行得更快吗?如果是这样,SQL 究竟是如何对这样的连接进行操作的? Table1 在 tran_id 上是唯一的,而 table2 在 tran_id - sku 级别上是唯一的。 另外,tran_id 是 varchar(50) 类型的列
SELECT a.tran_id, a.tran_date, b.sku
from table1 a
inner join table2 b
on a.tran_id = b.tran_id;
对
SELECT a.tran_id, a.tran_date, b.sku
from table1 a
inner join table2 b
on a.tran_id = b.tran_id and a.tran_date = b.tran_date;
我使用的是Oracle环境
【问题讨论】:
-
你可能会在Database Administrators 上为这个问题寻求更好的答案,这个问题甚至可能已经在那里得到了回答。