gpt4 book ai didi

sql-server - 当正确索引 ORDER BY 子句时,ASC 和 DESC 之间是否存在性能差异?

转载 作者:行者123 更新时间:2023-12-04 02:10:53 25 4
gpt4 key购买 nike

假设表 A 在 Column1 上有一个聚簇索引

以下语句之间是否存在任何性能影响差异:

SELECT TOP 5 Column1 FROM tableA  ORDER BY Column1 ASC

SELECT TOP 5 Column1 FROM tableA ORDER BY Column1 DESC

更新和收获

@TheGameiswar 的回答是正确的。但是,在 order by 子句中有多个列时有一个很大的问题:

SELECT TOP 5 Column1 FROM tableA  ORDER BY Column1 , Column2 DESC

其实就是

SELECT TOP 5 Column1 FROM tableA  ORDER BY Column1 ASC, Column2 DESC

上述语句对计划强加了一个排序查询处理器运算符,使查询效率非常低。

因此,请确保降序排序顺序包括两列的“DESC”

SELECT TOP 5 Column1 FROM tableA  ORDER BY Column1 DESC , Column2 DESC

最佳答案

没有区别或性能损失..

如果可用,SQL 服务器将使用索引(对于您使用的查询)根据排序向后或向前扫描。

我有一个数字表,它在数字列上有索引,如下所示。下面是索引的定义..

CREATE UNIQUE CLUSTERED INDEX [n] ON [dbo].[Numbers]
(
[Number] ASC
)

如您所见,上面的索引是使用 ASC 选项(默认设置)创建的。现在让我们看看数据库引擎如何处理下面的查询

select top 10* from numbers
order by number desc

enter image description here

你可以看到 SQL 决定向后扫描索引..

关于sql-server - 当正确索引 ORDER BY 子句时,ASC 和 DESC 之间是否存在性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38553292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com