【发布时间】:2012-09-20 22:35:17
【问题描述】:
我正在从一个包含约 3.5 亿条记录的表中选择结果,它的运行速度非常慢 - 大约 10 分钟。罪魁祸首似乎是 ORDER BY,好像我将其删除,查询只需要一点时间。这是要点:
SELECT TOP 100
(columns snipped)
FROM (
SELECT
CASE WHEN (e2.ID IS NULL) THEN
CAST(0 AS BIT) ELSE CAST(1 AS BIT) END AS RecordExists,
(columns snipped)
FROM dbo.Files AS e1
LEFT OUTER JOIN dbo.Records AS e2 ON e1.FID = e2.FID
) AS p1
ORDER BY p1.RecordExists
基本上,我是按照Files 是否有对应的Record 来排序结果,因为那些不需要先处理。我可以使用 WHERE 子句运行两个查询,但如果可能的话,我宁愿在一个查询中进行。
有什么办法可以加快速度吗?
【问题讨论】:
-
当您删除
ORDER BY时,您是否也删除了TOP 100?
标签: sql performance sql-server-2008 sql-order-by