SQL2008r2性能 - ORDER BY对于小结果集(25行,20列)来说很慢

时间:2014-05-28 20:20:13

标签: sql sql-server-2008-r2 sql-order-by query-performance

我的查询采用以下形式:

SELECT [Col1], [Col2], ..., [ColX]
FROM ( *** VERY LARGE QUERY WITH LOTS OF JOINS ***) [Src]

现在,这个查询几乎完全返回了25行,但是如果我最后添加了ORDER BY,那么它会挂起:

SELECT [Col1], [Col2], ..., [ColX]
FROM ( *** VERY LARGE QUERY WITH LOTS OF JOINS ***) [Src]
ORDER BY [Col1], [Col2], [Col3], [Col4]

如果我这样做也会发生:

SELECT * FROM (
SELECT [Col1], [Col2], ..., [ColX]
FROM ( *** VERY LARGE QUERY WITH LOTS OF JOINS ***) [Src]) [Src]
ORDER BY [Col1], [Col2], [Col3], [Col4]

但是如果我真的那么查询就会执行:

SELECT * INTO #TempTable FROM (
SELECT [Col1], [Col2], ..., [ColX]
FROM ( *** VERY LARGE QUERY WITH LOTS OF JOINS ***) [Src]) [Src]

SELECT * FROM #TempTable
ORDER BY [Col1], [Col2], [Col3], [Col4]

我检查了执行计划,它显然试图在查询深处的一个源表上进行索引查找和密钥查找。由于ORDER BY只应关注那25行,我很难过为什么它甚至会关注父表的索引。有什么想法吗?

0 个答案:

没有答案