【发布时间】:2015-09-14 14:19:42
【问题描述】:
我有一个包含以下列的表格:
- 身份证
- 主ID
主 ID 可以在具有不同 ID 的不同行之间共享。
例如:
ID | Master ID
1 | 1
2 | 1
3 | 1
4 | 2
知道 ID 我想检索所有共享相同主 ID 的行
我设法用这个查询做到了:
Select *
FROM table t
LEFT JOIN table t2
ON t.MASTER_ID = t2.MASTER_ID
Where t.ID = '1'
然后我也尝试使用:
Select *
FROM table t
LEFT JOIN table t2
ON t.MASTER_ID = t2.MASTER_ID and t.ID = '1'
在那种情况下,它要慢得多。谁能解释一下为什么?
【问题讨论】:
-
哪个 dbms? (不同的产品优化不同...)
-
缓存/磁盘问题?比较执行计划?
-
看查询计划
-
它们返回的数据集是否完全相同?
-
@JoePhilllips :第二个请求实际上失败了(我为该查询使用了太多资源......)但我现在得到了解释。