为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【技术分享】避免MySQL数据库表默认排序造成乱序

【技术分享】避免MySQL数据库表默认排序造成乱序

2016.02.22 19:10 9905浏览

废话不多说,正如题目所言,今天我在写后台的时候发现了一个奇怪的现象,于是百度了一下,发现的确需要注意这些细节。

是什么现象呢?就是MySQL数据库在用户删除数据库数据以后排序乱了,不是按照ID的自增进行排序,而是很随意的排序。带着这个疑问,抱着解决问题的态度先解决了这个BUG,然后再找原理。

解决方法很简单,在MySQL的SELECT语句中加个“ORDER BY id ASC”,这是递增排序的语法,倒序则是DESC。

那么问题到底出在什么地方?
首先我们要知道MySQL的SELECT语句默认排序是怎样排序的。MySQL SELECT 默认排序是按照物理存储顺序显示。(不进行额外排序)也就是说SELECT * FROM 会产生“表扫描”。如果表没有增,删,改操作,记录会显示为插入的顺序。这就是初始为什么像是递增的原因。

那么,当我们进行增,删,改以后不难发现会乱序,这便是问题所在。增删改是惯用功能,因此必须注意这个细节。当我们不进行ORDER BY来规定排序时,MySQL将会以最快的形式(物理存储顺序)展示数据,导致乱序。

在开发之中难免遇到像这样排序的问题,我在这里总结一下,如果是多条数据查询输出,养成习惯ORDER BY查询顺序习惯(特别是分页),如果是单个数据大可不必多几句代码占用内存。祝大家进步,新的一年健健康康(不是那个丑康康),快快乐乐!

点击查看更多内容
6人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
手记
粉丝
6
获赞与收藏
110

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

145篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消