聚类索引要不要加 order by

本文通过创建两个不同的表并插入数据,展示了在SQL查询中使用ORDERBY的重要性。即使已经有了聚类索引,添加ORDERBY也能确保结果的一致性和预期的排序顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库要不要加order by给大家两个例子一看就知道了

CREATE TABLE Beatles

     (LastName varchar(20) NOT NULL PRIMARY KEY CLUSTERED,

      FirstName varchar(20) NOT NULL UNIQUE NONCLUSTERED);

INSERT INTO Beatles (LastName, FirstName)

SELECT 'Lennon', 'John'

UNION ALL

SELECT 'McCartney', 'Paul'

UNION ALL

SELECT 'Harrison', 'George'

UNION ALL

SELECT 'Starr', 'Ringo';

SELECT LastName FROM Beatles;

DROP TABLE Beatles;

go

 

LastName

--------------------

Harrison

Lennon

McCartney
Starr

CREATE TABLE Stones

     (LastName varchar(20) NOT NULL PRIMARY KEY CLUSTERED,

      FirstName varchar(20) NOT NULL UNIQUE NONCLUSTERED);

INSERT INTO Stones (LastName, FirstName)

SELECT 'Jagger', 'Mick'

UNION ALL

SELECT 'Jones', 'Brian'

UNION ALL

SELECT 'Richards', 'Keith'

UNION ALL

SELECT 'Watts', 'Charlie'

UNION ALL

SELECT 'Wyman', 'Bill';

SELECT LastName FROM Stones;

DROP TABLE Stones;

go

 

LastName

--------------------

Wyman

Jones

Watts

Richards

Jagger

第一个表没有问题,输出即使没加 order by 也能按照正常输出,但是第二个表却是乱序,为什么那?



答案就在这个执行计划里,所以,无论何时不要忽略优化器的选择,要不然诡异的现象就会时有发生,另外你都已经有了聚类索引,多加一个order by会死人啊?效率会低啊?我说我自己。

如果有想看英文的请进 英文的


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值