如果不写Order By子句,会怎么样
来源:互联网 发布:matlab书籍推荐知乎 编辑:程序博客网 时间:2024/04/23 14:57
该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明!
原文标题:如果不写Order By子句,会怎么样
原文发表:2009/4/20 1:37:00
陈希章
原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/04/20/1439436.html原文标题:如果不写Order By子句,会怎么样
原文发表:2009/4/20 1:37:00
我们都知道在T-SQL查询中,如果不恰当地使用了Order By子句,那么将严重影响到性能。很多优化顾问都会把尽量减少使用order by作为一条建议。
但又有人转念一想,如果我们在查询中不写Order By子句,那么出来的结果到底会怎么样排序呢?你要知道,即便再怎么样,数据结果集还是得有一个顺序的。那么这个无形的顺序是由什么决定的呢?
这个问题的答案得从两个方面来说
1. 如果表拥有聚集索引,那么就会按照聚集索引,升序(ASC)
2. 如果表不拥有聚集索引,那么就不好说了。实际上,这种情况下数据出来的顺序是随机的,它主要与SQL Server读取数据的顺序有关。
我们可以来看一个例子
我有一个测试的表,叫Orders,里面只有一个列。我随机输入了一些数字。【注意:我是故意让数字交错的】
如果,我们没有在表上面设计聚集索引,那么
SELECT [ID]
FROM [demo].[dbo].[Orders]
的结果就和上面是一样的。【也许在某些时候会不一样,但这个不太好测试,在表的数据很多或者用户并发很多的情况下可能会出现】
我觉得这个顺序通常会跟我们insert数据的先后有关系的。
但是,如果我们在表上面添加一个聚集索引,指定ID为键列
此时,你再执行同样的查询语句,却可以看到下面的结果
下面这个是执行计划
作者:陈希章
出处:http://blog.csdn.net/chen_xizhang
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
- 如果不写Order By子句,会怎么样
- Order by 子句
- SQL ORDER BY 子句
- SQL ORDER BY 子句
- ORDER BY 子句用法
- SQL ORDER BY 子句
- SQL ORDER BY 子句
- ORDER BY子句
- SQL ORDER BY 子句
- SQL ORDER BY 子句
- order by子句
- SQL ORDER BY 子句
- order by子句
- 6.4.9:order by子句
- Oracle DB Order By子句
- SQL中的order by子句
- Hibernate中的order by子句
- oracle-order by 子句说明
- 如何在ASP.NET站点中实现对用户请求的监控
- EXCEPT 和 INTERSECT (Transact-SQL)
- 如果类型转换无可避免,那么应该尽可能用as运算符,而不是强制转换
- const和readonly
- 尽量用属性(Property),而不是字段(Field)
- 如果不写Order By子句,会怎么样
- 当SQL Server排序时遇上了NULL值
- T-SQL查询语句的执行步骤
- 创建索引时应该考虑该列使用时最可能的排序方式
- SQL Server 2005两种快照隔离机制的比较
- Microsoft Sync Framework
- 安全和公共只读数组字段
- ToString 的几个思考
- sp_MSforeachtable和sp_MSforeachdb