Pan*_*kaj 10 sql-server sql-server-2005 sql-server-2008
Clustered Index和Order by Clause之间有什么区别吗?
我必须从主表中填充Dropdown,以下是查询.
Select Id, Name from Table Order by Name
Run Code Online (Sandbox Code Playgroud)
我应该使用Order by Clause或Clustered Index来完成上述任务吗?
编辑
下面是表格的架构
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]
Run Code Online (Sandbox Code Playgroud)
我也有一个聚集索引Name.但是现在它没有显示在架构中.对不起,我不知道为什么.
Rem*_*anu 17
苹果和橘子.聚簇索引是一种存储选项.ORDER BY是一个查询选项.如果需要有序结果,获取它们的唯一方法是在查询中添加ORDER BY子句.期.
索引可以帮助查询优化器生成更有效的计划,并利用索引作为满足ORDER BY要求的手段.但是,群集或非群集索引的存在绝不会保证结果的任何排序.
所以你在查询中绝对需要ORDER BY.您还可以考虑按Name列索引来帮助查询.无论是否使用指数,都取决于更多因素.你应该阅读设计索引和引爆点.