我们都知道在T-SQL查询中,如果不恰当地使用了Order By子句,那么将严重影响到性能。很多优化顾问都会把尽量减少使用order by作为一条建议。

但又有人转念一想,如果我们在查询中不写Order By子句,那么出来的结果到底会怎么样排序呢?你要知道,即便再怎么样,数据结果集还是得有一个顺序的。那么这个无形的顺序是由什么决定的呢?

这个问题的答案得从两个方面来说

1. 如果表拥有聚集索引,那么就会按照聚集索引,升序(ASC)

2. 如果表不拥有聚集索引,那么就不好说了。实际上,这种情况下数据出来的顺序是随机的,它主要与SQL Server读取数据的顺序有关。

我们可以来看一个例子

我有一个测试的表,叫Orders,里面只有一个列。我随机输入了一些数字。【注意:我是故意让数字交错的】

如果,我们没有在表上面设计聚集索引,那么

SELECT [ID]
  FROM [demo].[dbo].[Orders]

的结果就和上面是一样的。【也许在某些时候会不一样,但这个不太好测试,在表的数据很多或者用户并发很多的情况下可能会出现】

我觉得这个顺序通常会跟我们insert数据的先后有关系的。

但是,如果我们在表上面添加一个聚集索引,指定ID为键列

此时,你再执行同样的查询语句,却可以看到下面的结果

下面这个是执行计划

如果不写Order By子句,会怎么样相关推荐

  1. SQLite | Group By 和 Order By 子句

    文章目录 1. Group by and Order by 1.1 Group Records 1.2 Ordering Records 1.3 Aggregate Functions 1.4 The ...

  2. cql oracle,Cassandra CQL中的Where和Order By子句

    Cassandra的PRIMARY KEY有两个部分: >分区键 >群集密钥 PRIMARY KEY(partitionKey1,clusteringKey1,clusteringKey2 ...

  3. SQL基础---SQL ORDER BY 子句

    SQL ORDER BY 子句 ORDER BY 语句用于对结果集进行排序. ORDER BY 语句 ORDER BY 语句用于根据指定的列对结果集进行排序. ORDER BY 语句默认按照升序对记录 ...

  4. 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询...

    执行sql语句: select * from ( select * from tab where ID>20 order by userID desc ) as a order by date ...

  5. oracle orber by,Oracle ORDER BY子句

    本文概述 在Oracle中, ORDER BY子句用于对结果集中的记录进行排序或重新排列. ORDER BY子句仅与SELECT语句一起使用. 句法: SELECT expressions FROM ...

  6. 关于子查询中的order by子句

    关于子查询中能否用order by子句,有以下两种情况: 第一种例如: select a.col1 from a where a.col2 in (select b.col2 from b order ...

  7. sql limit 子句_SQL Order by子句概述

    sql limit 子句 In this article, we'll walk-through the concept of the SQL Order by clause and understa ...

  8. PgSQL——学习笔记八: ORDER BY 子句:排序 GROUP BY 语句:分组

    PostgreSQL ORDER BY 语句:对一列或多列数据进行升序(ASC)或降序(DESC)排列. 在 PostgreSQL 中,ORDER BY 用于对一列或者多列数据进行升序(ASC)或者降 ...

  9. order by 子句 后面跟 case when

    order by 子句 后面跟 case when 不再是排序 可以理解为分组排序(group by) 比如说,学生排队,凡是姓张的,我们给他们贴个标签"1",凡是姓李的,我们给他 ...

最新文章

  1. 2019微生物组—宏基因组分析专题培训开课啦!
  2. Codeforces Round #491 (Div.2)
  3. 编写一个爬虫类库——(一)想法
  4. 利用HttpWebRequest和HttpWebResponse做黑客注射工具
  5. [C++][基础]8_容器
  6. jfinal 普通java工程_JFinal getModel方法如何在java项目中使用
  7. react进行状态管理的几种方式
  8. 数据可视化之旅(五):常用图表对比
  9. 计算机信息专业致谢词,计算机专业毕业论文致谢词.doc
  10. 互联网周刊:草根创业选择题
  11. YonMaster开发者认证线上赋能培训班定档4月18日
  12. 手游外挂分类及原理介绍
  13. JavaScript 实现 标签页 切换效果
  14. 天猫精灵python开发_天猫精灵X1智能音箱使用感想
  15. OPPO Pad 2 参数 OPPOPad 2评测怎么样
  16. 乐观,积极,踏实,静心,排解
  17. Chrome for Mac(谷歌浏览器MAC版)提示您的连接不是私密连接,没有继续访问选项解决方法
  18. 马克思基本原理概论 单元综合测试(二)
  19. java语音验证码_Java代码示例_Java语音验证接口 | 微米-中国领先的短信彩信接口平台服务商...
  20. ssdb mysql_SSDB高性能NoSQL数据库

热门文章

  1. 给卡车穿上“隐身衣”,让自动驾驶车辆撞上它!这场自动驾驶比赛,比谁攻得快...
  2. 传孙正义领投滴滴无人车3亿美元新融资,此前软银宣布出售阿里股份等资产
  3. Latex学习笔记0
  4. 《VMware、Citrix和Microsoft虚拟化技术详解与应用实践》一1.1 虚拟化概述
  5. 切勿版本化Web API
  6. 理解“==”和“equals()”
  7. Google App Engine(GAE)入门教程翻译
  8. 博客网站没落的两个原因
  9. C语言学习笔记--预编译/宏定义/数组/参数传递/函数指针
  10. Nova — 虚拟机密码修改