【发布时间】:2012-01-07 06:16:25
【问题描述】:
我有一个通过某个 id 合并表的查询。
SELECT ROW_NUMBER() OVER (ORDER BY PagedOptionData1.ExternalId ASC,
PagedOptionData1.RunDateTime DESC
) AS RowNumber,
PagedOptionData1.*,
PagedOptionData2.*
FROM PagedOptionData AS PagedOptionData1
LEFT OUTER JOIN PagedOptionData AS PagedOptionData2
ON PagedOptionData1.ExternalId = PagedOptionData2.ExternalId
AND PagedOptionData2.rn = 2
WHERE PagedOptionData1.rn = 1
其中 PagedOptionData 是一个带有各种连接的临时表。
这个查询可以优化吗?
【问题讨论】:
-
一天的第一单,需要优化吗?为什么对你来说太慢了?执行需要多长时间,是否会给您带来问题?我注意到的第一件事是您使用
*。您需要选择每个 列吗?如果没有,请明确指定您想要的。 -
将主题更改为:“SQL 101:优化琐碎查询”。如果这很复杂,当您第一次看到复杂的 4 页打印查询时,您的大脑可能会爆炸。
-
这句话
Where PagedOptionData is a temp table with various join .是什么意思。这似乎没有意义。PagedOptionData是否定义为公用表表达式?如果是这样,请显示它的定义。
标签: c# tsql query-optimization