gpt4 book ai didi

sql-server - "Clustered index"和 "Order by Clause"

转载 作者:行者123 更新时间:2023-12-02 10:03:17 24 4
gpt4 key购买 nike

聚集索引按子句排序有什么区别吗?

我必须从主表中填充下拉列表,以下是查询。

Select Id, Name from Table Order by Name

对于上述任务,我应该使用Order by Clause还是聚集索引

编辑

下面是表格的架构

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[lookup]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[lookup](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NULL,
CONSTRAINT [PK_lookup_ID] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[lookup]') AND name = N'IX_lookup_Name')
CREATE CLUSTERED INDEX [IX_lookup_Name] ON [dbo].[lookup]
(
[Name] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]

我在 Name 上也有一个聚集索引。但现在它没有显示在架构中。抱歉,我不知道为什么。

最佳答案

苹果和橙子。聚集索引是一种存储选项。 ORDER BY 是一个查询选项。如果您需要有序结果,获取它们的唯一方法是向查询添加 ORDER BY 子句。时期。

索引可以帮助查询优化器生成更有效的计划并利用索引来满足 ORDER BY 要求。但索引的存在(无论是聚集索引还是非聚集索引)决不能保证结果的任何排序。

因此,您的查询中绝对需要 ORDER BY。您还可以考虑按Name列建立索引来帮助执行查询。是否使用索引,取决于更多因素。你应该阅读Designing IndexesThe Tipping Point .

关于sql-server - "Clustered index"和 "Order by Clause",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6196699/

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