MySQL在多个索引的情况下的默认排序规则是什么?能否指定默认排序索引?

时间:2022-12-19 06:53:34
如果一张表中,有两个索引,比如说表结构如下的例子:
A_ID    int    Auto_Incr
A_TEXT  char   255

A_ID为unique的Index,我们增加如下的数据
1,AA
2,CC
3,BB
此时select(不用order by)出来的A_ID顺序就是1,2,3

但当我们给A_TEXT也增加索引(非unique)时,再select(不用order by)出来,顺序是1,3,2

大家都知道,想要给A_ID排序那只要order by A_ID就OK了,但是由于数据比较大,百万甚至千万级别,再需要多表关联查询,如果order by 一下,会花去大量时间.
因此,我想,有没有什么办法在表中有多个索引时,指定默认的排序方式?

4 个解决方案

#1


用你上述数据,你要求的结果是什么?

#2


找到原因了,是因为我先做表,然后加数据,再加其它索引,MySQL的默认排序就乱了
但如果先把索引都加好,然后添加数据,就会按照主键默认排序了.

谢谢各位朋友的关注.

#3


索引的排序是数据库系统自身控制的。 显示的时候的排序应该由用户在SQL语句中用order by 确定.感觉你楼上的方法,先建索引再加数据,应该还是会有乱序的情况。

#4


Mysql 默认就是根据主键进行排序的

#1


用你上述数据,你要求的结果是什么?

#2


找到原因了,是因为我先做表,然后加数据,再加其它索引,MySQL的默认排序就乱了
但如果先把索引都加好,然后添加数据,就会按照主键默认排序了.

谢谢各位朋友的关注.

#3


索引的排序是数据库系统自身控制的。 显示的时候的排序应该由用户在SQL语句中用order by 确定.感觉你楼上的方法,先建索引再加数据,应该还是会有乱序的情况。

#4


Mysql 默认就是根据主键进行排序的