Mysql 同一表上的主键和索引

Mysql 同一表上的主键和索引,mysql,indexing,primary-key,Mysql,Indexing,Primary Key,我使用以下查询创建了一个表: 创建表tblz id int not null自动递增主键, 代码varchar20 然后我添加了一个索引: alter table tblz添加索引代码索引代码 我添加了4条记录: 插入tblz代码值 插入tblz代码值“Y” 插入tblz代码值“Z” 插入tblz代码值 然后 从tblz中选择*: 结果是: +--+---+ |id |代码| +--+---+ |1|| |4|| |2 | Y| |3 | Z| +--+---+ 我的问题是: 由于这

我使用以下查询创建了一个表:

创建表tblz id int not null自动递增主键, 代码varchar20

然后我添加了一个索引:

alter table tblz添加索引代码索引代码

我添加了4条记录:

插入tblz代码值

插入tblz代码值“Y”

插入tblz代码值“Z”

插入tblz代码值

然后 从tblz中选择*:

结果是:

+--+---+

|id |代码|

+--+---+

|1||

|4||

|2 | Y|

|3 | Z|

+--+---+

我的问题是: 由于这个问题,主键是聚集索引,那么为什么MySQL不根据主键值排列记录呢?或者,它是否只根据添加的索引排列记录,而不考虑聚集索引?

行结果不按特定顺序返回。实际的检索顺序取决于引擎,但不能保证任何特定的排序。您需要使用“按警告排序”-它可能会很慢,尤其是对于大型结果集或检索数据的排序


主键被索引。键和索引是同义词,虽然没有主索引语法,但创建的任何键都会被索引。

主键会被索引,但除非您使用order BY SQL指定一个order,否则不能保证返回的是哪个order行。仅仅因为你在某个序列中添加了它们并不意味着它们将按该序列返回。好的,谢谢,我知道了。