1

我有一个带有 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 的顺序?”

4

1 回答 1

6

DBA Stack Exchange 站点

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

  • 因此,为了回答您的问题,MySQL 会根据需要对记录进行排序,而不会保证一致性。
  • 如果您只是对 MySQL 的内部结构感到好奇,Rolando 提供了一个有趣的答案。
  • 另一方面,如果您打算依赖此订单进行任何操作,则必须使用 指定所需的订单ORDER BY。做任何其他事情都是在为不受欢迎的意外做好准备
于 2013-04-14T18:50:32.267 回答