假设 MySQL 表 (ISAM) 的默认排序通过执行以下命令进行更改:
ALTER TABLE tablename ORDER BY columnname ASC;
从现在开始,假设我的查询中没有指定“ORDER BY”(即“SELECT * FROM tablename WHERE ... LIMIT 10;”),我是否保证按照“columnname ASC”的顺序从表中检索到记录?
是否有任何我应该注意的极端情况?
更新 #1:非常感谢 Quassnoi,他正确地指出了 INSERT 和 DELETE 会打乱排序。这导致我提出以下额外问题:
- 更新呢?假设没有对表进行 INSERT 或 DELETE,而只是更新 - 排序顺序会保持不变吗?
- 假设进行了 INSERT 和 DELETE - 我如何再次“重建”排序,比如每天一次(在这种特定情况下,表仅每天更改,因此在更改完成后每天重建它应该仍然可以!)。REPAIR TABLE 是否修复它,或者必须再次添加 ALTER TABLE ... ORDER BY ?