MySQL的聚集索引和非聚集索引区别?

MySQL的聚集索引和非聚集索引存在以下主要区别:

  1. 聚集索引索引的数据记录自身。
    非聚集索引只索引数据记录的索引键,本身并不储存数据记录。
  2. 一个表只能有一个聚集索引。
    而一个表可以有多个非聚集索引。
  3. 聚集索引的工作效率更高。
    因为数据本身就是按索引优化organized的,不需要再去查找数据。
  4. 空间占用上存在差异。
    聚集索引会占用更多的磁盘空间,因为它包含所有数据列。
  5. PRIMARY KEY默认创建聚集索引。
    而一般的UNIQUE KEY和INDEX默认是非聚集索引。
  6. 物理存储结构不同。
    聚集索引是数据physical clustered ,非聚集索引只存储索引键。

总的来说,两个索引的主要区别在于:
• 聚集索引索引的数据记录本身,非聚集索引只索引数据记录的索引键
• 一个表只能有一个聚集索引,但可以有多个非聚集索引
• 聚集索引工作效率更高
• 聚集索引空间占用更多
• PRIMARY KEY默认创建聚集索引
• 其物理存储结构也不相同

这正是两种索引带来效率差异的关键原因。