MySQL中的默认排序(ALTER TABLE…ORDER BY…;)

假定通过执行以下操作来更改MySQL表(ISAM)的默认顺序:

ALTER TABLE tablename ORDER BY columnname ASC;

从现在开始,假设我的查询中未指定“ ORDER BY”(即“ SELECT * FROM tablename WHERE … LIMIT

10;”),我是否可以 按“ columnname ASC”的顺序从表中检索到记录?

我应该注意什么极端情况吗?

感谢Quassnoi,他正确地指出INSERT和DELETE弄乱了顺序。这使我想到以下额外的问题:

  • 那么更新呢?假设没有对表进行INSERT或DELETE操作,而仅对更新进行了操作-排序顺序是否完整?
  • 假设已完成INSERT和DELETE-如何再次“重建”排序,每天说一次(在这种特定情况下,该表每天仅更改一次,因此在进行更改后每天重新生成它应该仍然可以!)。REPAIR TABLE是否可以修复它,还是必须再次添加ALTER TABLE … ORDER BY?

回答:

从 :

请注意,插入和删除后,表不会按此顺序保留

实际上,如果您SELECT ... ORDER BY向该表发出命令,则该选项ALTER

TABLE不会浪费您的时间filesort,反而会使filesort速度更快。

对已排序的集合进行排序等同于浏览该集合以确保一切正常。

那么更新呢?假设没有对表进行INSERT或DELETE操作,而仅对更新进行了操作-排序顺序是否完整?

如果您的表不包含任何动态字段(如VARCHAR“ BLOB”或“ BLOB”),则更新时 很可能MyISAM不会移动它。

假设已完成INSERT和DELETE-

如何再次“重建”排序,每天说一次(在这种特定情况下,该表每天仅更改一次,因此在进行更改后每天重新生成它应该仍然可以!)。REPAIR

TABLE是否可以修复它,还是必须再次添加ALTER TABLE … ORDER BY?

您需要做ALTER TABLE ... ORDER BY

REPAIR 只是修复损坏表的物理结构。

以上是 MySQL中的默认排序(ALTER TABLE…ORDER BY…;) 的全部内容, 来源链接: utcz.com/qa/434517.html

回到顶部