我想到这个问题是从观察mysql的自然排序状态引发的,我们用的很多mysql管理软件,在列出表数据时一般都用的以下代码
SELECT * FROM table_name LIMIT x OFFSET y
这个时候没有指定任何排序字段,那么在mysql内部就应该有一个类似oracle或者pgsql里面sequence id的东西,做为它的默认索引来实现排序之类的东西。但我从来没看到有人提过mysql有这个玩意。
另一个佐证是如果你指定了一个自增id作为主键,在我们预想中如果执行上面的语句,主键的排序顺序应该一致,实际上并不是这样,虽然大部分是一致的,但是有少部分会打乱。因此他一定有一个内部的排序机制,这个机制是什么?