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

时间:2013-04-14 18:48:29

标签: mysql sql sql-order-by

我有一个带有AUTO_INCREMENT列(id_mt)的表(mytable)。当我做一个简单的查询,如

SELECT * FROM mytable;

结果由AUTO_INCREMENT列按

排序
SELECT * FROM mytable order by id_mt;

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

要明确某些参考其他帖子的人:我不使用

ALTER TABLE mytable ORDER BY sort_order ASC;

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

1 个答案:

答案 0 :(得分:6)

来自DBA Stack Exchange site

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

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