具有AUTO_INCREMENT列的MySQL表中的简单SELECT的默认顺序是什么

phi*_*ext 1 mysql sql sql-order-by

我有一个表(mytable)和一个AUTO_INCREMENT列(id_mt).当我做一个简单的查询时

SELECT * FROM mytable;
Run Code Online (Sandbox Code Playgroud)

结果由AUTO_INCREMENT列按顺序排序

SELECT * FROM mytable order by id_mt;
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:当你没有使用'order by'时,如果你有一个AUTO_INCREMENT列,那么结果顺序的规则(如果有的话)是什么?

对于一些参考其他帖子的人来说要明确:我不使用

ALTER TABLE mytable ORDER BY sort_order ASC;
Run Code Online (Sandbox Code Playgroud)

很明显,当您使用ORDER BY查询时,此查询只会更改性能.我的问题更多的是'AUTO_INCREMENT是否会改变(强制?)简单SELECT的顺序?'

Joh*_*nde 6

DBA Stack Exchange站点:

在SQL世界中,顺序不是一组数据的固有属性.因此,除非您使用ORDER BY子句查询数据,否则您的RDBMS无法保证您的数据将以特定顺序返回 - 或者甚至以一致的顺序返回.

  • 因此,为了回答您的问题,MySQL会根据需要对记录进行排序,而不保证一致性.
  • 如果你只是对MySQL的内部结构感到好奇,Rolando提供了一个有趣的答案.
  • 另一方面,如果您打算依赖此订单进行任何操作,则必须使用指定所需的订单ORDER BY.做任何事情都是为了让自己陷入不受欢迎的惊喜之中.