有人回答我为什么MySQL表原始ID不按顺序进行吗?
答案 0 :(得分:2)
MySQL将根据您的查询尝试尽快为您提供结果。
如果您不告诉MySQL在任何字段上进行排序,则MySQL可能会选择磁盘上的排序顺序。
mysql中的记录并非总是按顺序存储在磁盘上。例如,如果您删除表中间的一条记录,它们可能会出现故障。下一个记录(出于节省空间的原因)可能会插入到您之前删除记录的位置。
不用担心。这是正常的。如果创建使用MySQL的应用程序,请确保在查询末尾包含ORDER BY id
,以得到可预测的顺序。
答案 1 :(得分:1)
如果不使用ORDER BY
子句来使所需顺序明确,则查询结果取决于实现。这意味着如果您不这样做,MySQL可以选择顺序。
对于MyISAM表,默认顺序是表中存储行的顺序,随着行的添加和删除,行可能会随着时间的推移而变得混乱。新行可能会适合已删除行留下的空隙,即使这会使它们“乱序”存储。
对于InnoDB表,默认顺序是由用于读取行的索引决定的。这通常是主键,但可能不是。这取决于您的表定义和用于读取行的SQL查询。
如果要按特定列对行进行排序,只需使用ORDER BY
。