假设通过执行以下命令来更改MySQL表(ISAM)的默认顺序:
ALTER TABLE tablename ORDER BY columnname ASC;
Run Code Online (Sandbox Code Playgroud)
从现在开始,我保证以"columnname ASC"的顺序获取从表中检索到的记录,假设在我的查询中没有指定"ORDER BY"(即"SELECT*FROM tablename WHERE ... LIMIT 10;")?
我应该注意哪些角落?
更新#1:非常感谢Quassnoi,他正确地指出INSERT和DELETE会扰乱排序.这引出了以下额外问题:
我有一个表(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的顺序?'