MySQL也有潜规则 – Select 语句不加 Order By 如何排序?
今天遇到一个问题,有一个 Select 语句没有加 “Order By”,返回的数据是不确定的。
这种问题碰到不止几次了。追根寻底, Select 语句如果不加 “Order By”, MySQL会怎么排序呢?
在网上搜了一下,在MySQL论坛发现了这篇文章。
http://forums.mysql.com/read.php?21,239471,239688#msg-239688
简单翻译一下
* 不能依赖 MySQL 的默认排序
* 如果你想排序,总是加上 Order By
* GROUP BY 强加了 Order By (这与标准语法冲突,如果要避免,请使用 ORDER BY NULL)这里我有疑问,
到底强加了何种 Order by
对于 MyISAM 表
MySQL Select 默认排序是按照物理存储顺序显示的。(不进行额外排序).
也就是说
SELECT * FROM tbl – 会产生“表扫描”。如果表没有删除、替换、更新操作,记录会显示为插入的顺序。
InnoDB 表
同样的情况,会按主键的顺序排列。再次强调,这只是潜规则(artifact of the underlying implementation:怎么翻译?),
不靠谱的。
我的理解与推测:
“Select” 不加 “Order by”时, MySQL 会尝试以尽可能快的方法(MySQL 实际的方法不见得快)返回数据。
由于访问主键、索引大多数情况会快一些(在Cache里)所以返回的数据有可能以主键、索引的顺序输出,
这里并不会真的进行排序,主要是由于主键、索引本身就是排序放到内存的,所以连续输出时可能是某种序列。
在一些情况下消耗硬盘寻道时间最短的数据会先返回。
如果只查询单个表,在特殊的情况下是有规律的。
最后总结
“Order By 是要加的”
如果谁想更深一步了解,需要看看 MySQL 的源代码了。
转载于:https://www.cnblogs.com/panshuai/p/4744730.html
MySQL也有潜规则 – Select 语句不加 Order By 如何排序?相关推荐
- MySQL使用SELECT 语句不加ORDER BY默认是如何排序的?
大家好,我是阿飞云 怕什么真理无穷,进一步有近一步的欢喜 记录一个MySQL查询排序的问题,一个SQL语句没有加order by,那么查询出来的结果到底是按照什么规则排序的呢?查询了网上的一些资料,分 ...
- mysql 查询优化器跟踪_3. select语句执行过程-优化器
1.有哪些 2.开启追踪 优化器追踪默认是关闭的 2.1 开启 SHOW VARIABLES LIKE 'optimizer_trace'; set optimizer_trace='enabled= ...
- mysql中,一条select语句是如何执行的?
接下来通过语句弄明白整个Select语句的内部运行状态: 连接器: Mysql>mysql -uroot -p 你首先连接到这个数据库上:链接器负责跟客户端建立连接,获取权限,维持和管理连接 ● ...
- MySQL学习之基本的SELECT语句
SQL语言的分类 DDL(Data Definition Languages.数据定义语言),这些语句定义了不同的数据库.表.视图.索 引等数据库对象,还可以用来创建.删除.修改数据库和数据表的结构. ...
- mysql com_select_mysql学习一之SELECT语句
完整语法 先给一下完整的语法,后面将逐一来讲解. 基础语法 SELECT 字段列表 FROM 数据源; 完整语法 select 去重选项 字段列表 [as 字段别名] from 数据源 [where子 ...
- mysql索引查询 with_mysql的select语句总结与索引使用
单表查询: 查询指定记录 select ....where 带IN的关键字查询 not in 带between and的范围查询 select column1,column2 from tab ...
- 一文搞懂select语句在MySQL中的执行流程!
MySQL作为互联网行业使用最多的关系型数据库之一,与其免费.开源的特性是密不可分的.然而,很多小伙伴工作了很多年,只知道使用MySQL进行CRUD操作,这也导致很多小伙伴工作多年后,想跳槽进入大厂, ...
- 原来select语句在MySQL中是这样执行的!看完又涨见识了!这回我要碾压面试官!
大家好,我是冰河~~ MySQL作为互联网行业使用最多的关系型数据库之一,与其免费.开源的特性是密不可分的.然而,很多小伙伴工作了很多年,只知道使用MySQL进行CRUD操作,这也导致很多小伙伴工作多 ...
- mysql一秒查询次数_单个select语句实现MySQL查询统计次数
单个select语句实现MySQL查询统计次数 单个select语句实现MySQL查询统计次数的方法用处在哪里呢?用处太多了,比如一个成绩单,你要查询及格得人数与不及格的人数,怎么一次查询出来? My ...
最新文章
- 160家优秀国外技术公司博客
- [前端技术]如何加深对JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解...
- UNIX再学习 -- 可重入函数和 SIGCHLD 语义
- PyTorch 实现 Mask-RCNN
- HTML5 标签、事件句柄属性以及浏览器兼容情况速查手册
- 复练-软考网规-两地三中心
- vb怎么判断整数_VB数学函数大全
- Windows 10 移动版正式结束支持
- 1716.计算力扣银行的钱-LeetCode
- 以汉字开头,以某个词结尾的一段文字的正则
- 怎么用百度搜索php网站,PHP简单获取网站百度搜索和搜狗搜索收录量的方法
- 嵌入式系统开发之根文件系统
- 【精品】好用的验证码工具类VerifyCodeUtils
- 用SQL语句创建学生表
- 2023年东南大学集成电路设计考研考情与难度、参考书及上岸前辈备考经验
- html5经纬度定位 源码_HTML5获取地理经纬度并通过百度接口得到实时位置
- python怎么学比较快,怎样快速学会python
- 软件工程——软件管理
- java对手机芯片有没有要求_芯片对手机到底有多重要
- 初中教师计算机培训方案,教师年度信息技术培训计划的方案
热门文章
- mysql中文时好时坏_mysql索引的问题,时好时坏
- php分布式cache,thinkPHP实现MemCache分布式缓存功能
- max格式转obj小工具_PDF文件转JPG等图片格式的小工具
- php.ini 相对路径,php中zend相对路径问题
- Alluxio 助力 Kubernetes,加速云端深度学习
- 云原生生态周报 Vol. 17 | Helm 3 发布首个 beta 版本
- redis启动后 允许访问_最全Redis基本知识
- 本地的文件怎么放到虚拟桌面_搬新家桌面文件怎么收纳?5个便宜实用的收纳神器,你买过几个?...
- spring 数组中随机取几个_美团Java研发三面(3年经验):MySQL+Spring源码+分布式+算法+线程...
- 安装mysql时安装不了starting the server_archlinux/manjaro 上安装percona-server