为什么mysql表原始ID没有连续显示?

时间:2018-08-30 15:09:28

标签: mysql sql-order-by

Snapshot 1

Snapshot 2

有人回答我为什么MySQL表原始ID不按顺序进行吗?

2 个答案:

答案 0 :(得分:2)

MySQL将根据您的查询尝试尽快为您提供结果。

如果您不告诉MySQL在任何字段上进行排序,则MySQL可能会选择磁盘上的排序顺序。

mysql中的记录并非总是按顺序存储在磁盘上。例如,如果您删除表中间的一条记录,它们可能会出现故障。下一个记录(出于节省空间的原因)可能会插入到您之前删除记录的位置。

不用担心。这是正常的。如果创建使用MySQL的应用程序,请确保在查询末尾包含ORDER BY id,以得到可预测的顺序。

答案 1 :(得分:1)

如果不使用ORDER BY子句来使所需顺序明确,则查询结果取决于实现。这意味着如果您不这样做,MySQL可以选择顺序。

对于MyISAM表,默认顺序是表中存储行的顺序,随着行的添加和删除,行可能会随着时间的推移而变得混乱。新行可能会适合已删除行留下的空隙,即使这会使它们“乱序”存储。

对于InnoDB表,默认顺序是由用于读取行的索引决定的。这通常是主键,但可能不是。这取决于您的表定义和用于读取行的SQL查询。

如果要按特定列对行进行排序,只需使用ORDER BY