同一个表上的主键和索引

时间:2013-10-08 19:44:24

标签: mysql indexing primary-key

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

create table tblz ( id int not null auto_increment primary key, code varchar(20))

然后我添加了一个索引:

alter table tblz add index codeind (code)

我添加了4条记录:

insert into tblz (code) values ('')

insert into tblz (code) values ('Y')

insert into tblz (code) values ('Z')

insert into tblz (code) values ('')

之后 select * from tblz

这是结果:

+----+------+

| id | code |

+----+------+

| 1 | |

| 4 | |

| 2 | Y |

| 3 | Z |

+----+------+

我的问题是: 由于这个问题Is the primary key automatically indexed in MySQL?,主键是聚簇索引,那么为什么MySQL没有根据主键值排列记录?或者它是否由于添加的索引而排列记录而不管聚集索引?

1 个答案:

答案 0 :(得分:1)

MySQL says行结果以“无特定顺序”返回。实际的检索顺序取决于引擎,但不保证任何特定的排序。您需要使用ORDER BY(警告 - 它可能很慢,特别是对于大型结果集)或者在检索数据时进行排序。

PRIMARY KEY已编入索引。 KEYINDEX是同义词,虽然没有PRIMARY INDEX语法,但创建的任何键都会被编入索引。