我有一个查询,你可以看到下面的例子:
SELECT TOP(50000)* FROM
[Database].[dbo].[Table] WHERE Column
IS NOT NULL ORDER BY Column2 DESC
要执行它需要 2分21秒,总记录 350K
列类型
ID int
Column1 nvarchar(50)
Column2 nvarchar(250)
Column3 datetime
Column4 nvarchar(1000)
Column5 nvarchar(1000)
Column6 nvarchar(50)
在我看来,需要很长时间。任何人都可以建议我如何提高性能? 或者也许有人知道什么是根本原因?
答案 0 :(得分:3)
有几件事:
设计
基本上,你返回表的1/7左右,因此可以忽略过滤器列上的任何索引,再加上SELECT *。 column2上的索引可能有助于避免中间排序。
编辑:
有3列,您可以将其设为covering(如marc_s'评论)
答案 1 :(得分:1)
您正在返回大量数据 - 网络IO可能很容易占用所花费的时间。
您可能还错过了column2
列上的索引,这可能导致表扫描而不是索引搜索(昂贵与廉价操作)。
答案 2 :(得分:0)
您是否在第2列(用于排序的那个)上放了一个索引?