我使用此查询创建了一个表:
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 ('')
<p>insert into tblz (code) values ('Y')</p>
<p>insert into tblz (code) values ('Z')</p>
insert into tblz (code) values ('')
然后之后
select * from tblz
:
这是结果:
<p>+----+------+</p>
<p>| id | code |</p>
<p>+----+------+</p>
<p>| 1 | |</p>
<p>| 4 | |</p>
<p>| 2 | Y |</p>
<p>| 3 | Z |</p>
<p>+----+------+</p>
我的问题是:
由于这个问题Is the primary key automatically indexed in MySQL?主键是聚集索引,那么为什么MySQL不根据主键值来排列记录呢?还是只根据添加的索引来排列记录,而不管聚集索引?
最佳答案
MySQL says该行结果以“无特定顺序”返回。实际的检索顺序取决于引擎,但不保证任何特定的排序。您需要使用 ORDER BY
(警告 - 它可能会很慢,尤其是对于大型结果集)或对检索数据的任何内容进行排序。
PRIMARY KEY
已建立索引。 KEY
和 INDEX
是同义词,尽管没有 PRIMARY INDEX
语法,但创建的任何键都会被索引。
关于mysql - 主键和索引在同一个表上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19256892/