Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >mysql:深究 sql 默认排序 order by

mysql:深究 sql 默认排序 order by

作者头像
Lenis
发布于 2019-12-25 08:31:12
发布于 2019-12-25 08:31:12
4.4K0
举报
文章被收录于专栏:有关SQL有关SQL

mysql 语句中如果没有使用 order by 来排序,通常会用 主键正序排列,但是有的时候不是这样,来看一个实例。

实例


群友问:请教一个问题,mysql 默认排序问题,当sql 语句 的排序没有指定 主键(id)的时候是按着什么规则排序的呢?

这个 sql 语句 当 hit_count = 0 和 uptime = 0 时 的数据和 跟 limit_count 变化

根据 id 来看,当 uptime 为0时,的确是混乱了,order by是不是应该相当于没有效果。

讨论


来自网友的回答:

大概意思就是数据储存的表 不是有序的,而是一个集合,在没有使用 order by 来排序的时候,不能默认就是 根据主键排序。

查阅


然后从 stackoverflow 上查了一下,找到了这样的回答:

There is no default sort order. Even if the table has a clustered index, you are not guaranteed to get the results in that order. You must use an order by clause if you want a specific order.

大概意思:没有默认的排序顺序。即使表具有聚集索引,也不能保证按该顺序获得结果。如果需要特定的顺序,则必须使用ORDER BY子句。

结论


到这大家应该明白了,mysql 的没有默认排序,如果需要排序一定要加上 order by 来排序,大家有没有遇到过这样的问题,欢迎一起来讨论,如果有不对的地方,请指正,感谢。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 有关SQL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
要想通过面试,MySQL的Limit子句底层原理你不可不知
  在二级索引idx_key1中,key1列是有序的,查找按key1列排序的第1条记录,MySQL只需要从idx_key1中获取到第一条二级索引记录,然后直接回表取得完整的记录即可,这个很容易理解。
砖业洋__
2023/05/06
5000
要想通过面试,MySQL的Limit子句底层原理你不可不知
MYSQL分页查询时没有用ORDER BY出现数据重复的问题
产品反馈,用户在使用分页列表时,出现数据重复的问题,查看代码后发现对应的分页SQL并没有使用order by进行排序,但是印象中Mysql的InnoDB引擎会默认按照主键id进行排序,本地测试了一下的确出现了部分数据在不同的页都出现的问题。
翎野君
2023/05/12
1.7K0
MYSQL分页查询时没有用ORDER BY出现数据重复的问题
你知道MySQL与MariaDB对子查询中order by的处理的差异吗?
02-23无意中在在论坛看到一个帖;具体的问题大概就是MySQL与MariaDB对子查询中order by的查询结果不一样;
SEian.G
2021/03/03
8090
MySQL——优化ORDER BY语句
本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的老少爷们可以先看一下我之前写过的索引相关文章。现在让我们开始吧。
撸码那些事
2018/10/08
1.2K0
MySQL——优化ORDER BY语句
Mysql order by 优化
本节描述MySQL何时可以使用索引来满足ORDER BY子句,当不能使用索引时使用filesort,以及优化器中有关ORDER BY的执行计划信息。
XING辋
2019/03/26
1.5K0
原 荐 MySQL-性能优化-索引和查询优化
MySQL-性能优化-索引和查询优化 要知道为什么使用索引,要知道如何去使用好索引,使自己的查询达到最优性能,需要先了解索引的数据结构和磁盘的存取原理 参考博客:MySQL索引背后的数据结构及算法原理
秋日芒草
2018/06/06
7700
SQL索引基础
一、深入浅出理解索引结构    实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:    其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。    如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。    通过以上例子,我们可以理解到什么是“聚集索引”和“非聚集索引”。进一步引申一下,我们可以很容易的理解:每个表只能有一个聚集索引,因为目录只能按照一种方法进行排序。  二、何时使用聚集索引或非聚集索引   下面的表总结了何时使用聚集索引或非聚集索引(很重要)。 动作描述使用聚集索引  使用非聚集索引 外键列 应  应 主键列 应 应 列经常被分组排序(order by) 应 应 返回某范围内的数据 应 不应 小数目的不同值 应 不应 大数目的不同值 不应 应 频繁更新的列不应  应 频繁修改索引列 不应 应 一个或极少不同值 不应 不应
javascript.shop
2019/09/04
1.1K0
MySQL DQL 数据查询
MySQL 的 SELECT 语句用于从数据库表中检索数据。功能强大,语句结构复杂多样。不过基本的语句格式像下面这个样子。
恋喵大鲤鱼
2023/10/12
3350
SQL优化完整详解
通过 SHOW STATUS 可以提供服务器状态信息,也可以使用 mysqladmin extende d-status 命令获得。 SHOW STATUS 可以根据需要显示 session 级别的统计结果和 global级别的统计结果。
黄规速
2022/04/14
1.3K0
SQL优化完整详解
sql优化提速整理
在我们实际开发中,随着业务的不断增加,数据量也在不断的攀升,这样就离不开一个问题:数据查询效率优化 根据自己的以往实际项目工作经验和学习所知,现在对SQL查询优化做一个简单的梳理总结,总结的不好之处,望多多指点交流学习 主要通过以下几个点来进行总结分析:索引、语句本身、分区存储、分库分表
小小许
2019/10/26
8140
SQL索引一步到位
SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱。   1.1 什么是索引?   SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 下面举两个简单的例子: 图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书找某某作
Java高级架构
2018/07/20
1.6K0
MySQL 技术非懂不可
在MySQL数据库中,实例与数据库的关系通常是一一对应的,即一个实例对应一个数据库,一个数据库对应一个实例。但是,在集群情况下可能存在一个数据库被多个数据实例使用的情况。
BUG弄潮儿
2021/06/25
7740
MySQL 技术非懂不可
我的Mysql查询SQL优化总结
当我们遇到一个慢查询语句时,首先要做的是检查所编写的 SQL 语句是否合理,优化 SQL 语句从而提升查询效率。所以对 SQL 有一个整体的认识是有必要的。
程序员小明
2019/10/10
1.8K0
我的Mysql查询SQL优化总结
sql-索引的作用(超详细)
实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:
全栈程序员站长
2022/09/06
8670
MySQL ORDER BY(排序) 语句
昨天介绍了 MySQL 数据库 UNION 操作符的使用,今天主要讲解下 ORDER BY(排序)语句。
用户10358987
2024/04/23
2200
MySQL ORDER BY(排序) 语句
看完这篇文章,99%的人都会使用Mysql Explain工具
注意:本文基于mysql5.7进行操作,各个版本的mysql使用Explan会有微小的差异
黎明大大
2020/09/14
5570
Mysql慢sql优化
index 1.MySQL的执行过程 2.索引的定义 3.MySQL执行计划explain or desc 4.索引使用/创建规则 5.弊端 6.设计规范 7.SQL建议
oktokeep
2024/10/09
1420
Mysql慢sql优化
MYSQL面试常考知识点总结
第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;
Java帮帮
2019/05/08
7890
MYSQL面试常考知识点总结
SQL server 数据库的索引和视图
1、索引:数据排序的方法,快速查询数据 分类: 唯一索引:不允许有相同值 主键索引:自动创建的主键对应的索引,命令方式不可删 聚集索引:物理顺序与索引顺序一致,只能创建一个 非聚集索引:物理顺序与索引顺序不一致,可创建多个 复合索引:多列组成 全文索引:特殊功能索引 命令: 创建索引:create [clustered|unique] index 索引名 on 表名(列名 desc) 使用索引:select * from 表名 with (index(索引名)) 注意事项:①
L宝宝聊IT
2018/06/20
1.1K0
程序猿必备技能之MySQL高级篇
  MySQL是我们非常常用的关系型数据库,非常重要,所以在这里给大家整理下MySQL的高级内容。
用户4919348
2022/01/07
1.5K0
程序猿必备技能之MySQL高级篇
相关推荐
要想通过面试,MySQL的Limit子句底层原理你不可不知
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档