MySQL查询时不加order by的时候默认排序规则是什么?

2022-10-18 09:05:16

MySQL查询的时候一般都会加一个order by来保持查出的顺序,但没加的时候就会出现怪异的排序出来。

示例1:

id是自增的,可以看出查询结果是按插入顺序排的

怪异的示例2:

跟上边一样,没有任何条件添加,查出的顺序就不是按照id来的了,中间会却一段数据,被排序在后边了。为什么呢?

经explain分析得知:

以上两图分别对应上边俩示例的explain,默认情况下第一个没有用到索引,第二个用到了user_id这个索引,user_id是表里除了主键之外的唯一一个索引,普通索引。

可以看出,mysql在不给定order by条件的时候,得到的数据结果的顺序是跟查询列有关的。因为在不同的查询列的时候,可能会使用到不同的索引条件。Mysql在使用不同索引的时候,得到的数据顺序是不一样的。这个可能就跟Mysql的索引建立机制,以及索引的使用有关了。更深的东西,在这里就不深追了。为了避免这种情况,在以后的项目中,切记要加上order by

  • 作者:JackMa_
  • 原文链接:https://allendaydayup.blog.csdn.net/article/details/118343998
    更新时间:2022-10-18 09:05:16