【问题标题】:Primary key and index on same table同一张表的主键和索引
【发布时间】:2013-10-08 19:44:24
【问题描述】:

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

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 ('')

插入 tblz(代码)值('Y')

插入 tblz(代码)值('Z')

插入tblz(代码)值('')

然后之后 select * from tblz:

这是结果:

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

|编号 |代码 |

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

| 1 | |

| 4 | |

| 2 |是的|

| 3 | Z |

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

我的问题是: 由于Is the primary key automatically indexed in MySQL?这个问题,主键是聚集索引,那么MySQL为什么没有因为主键值而排列记录呢?还是只因为添加了索引而不考虑聚集索引来排列记录?

【问题讨论】:

  • 主键被索引,但是除非你用ORDER BY指定一个顺序,否则SQL不保证会返回哪些顺序行。仅仅因为你以某种顺序添加它们并不意味着它们'将按该顺序返回。
  • 好的,谢谢,我知道了。

标签: mysql indexing primary-key


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2013-01-06
    • 2016-11-18
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    相关资源
    最近更新 更多