gpt4 book ai didi

sql - 微软 SQL : Performance for querying ID descending

转载 作者:行者123 更新时间:2023-12-01 21:30:44 25 4
gpt4 key购买 nike

这个问题与 Microsoft SQL Server 中的一个表有关,该表通常使用 ORDER BY Id DESC 进行查询。

将主键设置为 PRIMARY KEY CLUSTERED (Id DESC) 是否会提高性能?或者是否需要索引?还是没有它时它会变得尽可能快?

表:

CREATE TABLE [dbo].[Items] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Category] INT NOT NULL,
[Name] NVARCHAR(255) NULL,
CONSTRAINT [PK_Items] PRIMARY KEY CLUSTERED ([Id] ASC)
)

查询:

SELECT TOP 1 * FROM [dbo].[Items]
WHERE Catgory = 123
ORDER BY [Id] DESC

最佳答案

Would there be a performance benefit from setting the primary key to PRIMARY KEYCLUSTERED (Id DESC)?

如您所见:视情况而定。

过滤器在 Category = 123 上。要查找 Category 123 的所有条目,因为没有定义 INDEX,服务器必须进行表扫描。除非你有一个非常大的结果集,和/或一些非常糟糕的配置 tempdb 和非常低的内存(因为磁盘只在 tempdb 内存不足时才使用)与表扫描相比,hte 结果的排序将无关紧要。

您实际上是在跟踪错误的尾部。您更有可能通过向 Cateogory 添加非唯一索引来加快查询速度,以便查询可以根据您的查询条件快速预过滤数据。

如果您要分析此查询的查询计划(您应该这样做——从技术上讲,如果您不付出一些努力,我们甚至不应该回答这个问题,并且查看查询计划就像您做的第一件事),您会很高兴可能会看到时间花在了查询上,而不是结果排序上。

关于sql - 微软 SQL : Performance for querying ID descending,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62553673/

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