【发布时间】:2010-07-31 11:57:49
【问题描述】:
我使用的是 SQL Server 2008,我有两个表
表 1
包含 350 万条记录
+----+-------------+
| pk | dim1 |
+----+-------------+
indexing applied on column **pk**
表2
包含 1500 万条记录
+----+-------------+
| fk | fact1 |
+----+-------------+
indexing applied on column **fk**
我对这些表运行了 2 次查询以获取 t2.fact1
查询1
SELECT t2.fact1
FROM Table1 AS t1, Table2 AS t2
WHERE t2.fk = t1.pk
查询2
SELECT t2.fact1
FROM Table1
WHERE t2.fk IN (SELECT t1.pk FROM Table1 AS t1)
得到的结果是 Query1 取了 7 secs 而 Query2 取了 6 secs
如果我在上面的查询中使用IN,虽然我在博客中阅读的某些地方会减慢查询速度。
问题#1:谁能提出为什么 Query2 更快?
在同一张表的另一个实验中(当没有应用索引时)我运行了上面的查询,并且 query2 再次比 Query1 快,不幸的是不记得它的时间了。
问题#2:谁能指出为什么 Query2 更快?
【问题讨论】:
标签: sql sql-server-2008 performance