"聚集索引"和"按条款排序"

Pan*_*kaj 10 sql-server sql-server-2005 sql-server-2008

Clustered IndexOrder by Clause之间有什么区别吗?

我必须从主表中填充Dropdown,以下是查询.

Select Id, Name from Table Order by Name
Run Code Online (Sandbox Code Playgroud)

我应该使用Order by ClauseClustered 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列索引来帮助查询.无论是否使用指数,都取决于更多因素.你应该阅读设计索引引爆点.

  • 我完全可以向你保证,你的假设是错误的. (3认同)
  • 您应该阅读:http://sqlblog.com/blogs/hugo_kornelis/archive/2006/12/31/Beatles-vs-Stones.aspx.并解释. (3认同)
  • SQL,Remus是对的.聚簇索引不保证排序顺序; 但它可以在排序时提高性能.无论您在测试中看到什么,没有ORDER BY的查询都会返回未排序的结果.http://www.sql-server-performance.com/forum/threads/clustered-indexes-returning-incorrect-order.13251/ (2认同)