mysql聚簇索引

1.聚簇索引是物理索引,数据在表里是按顺序存储的,物理上是连续的,一般选主键id作为聚簇索引,且一张表里只能有一个聚簇索引。
2.只有InnoDB支持聚簇索引。
3.非聚簇索引是逻辑索引,将数据的某个字段抽取出来组成独立的B-Tree,原数据的存储顺序可能不是物理连续的。
4.对于非聚簇索引,索引字段越紧凑,每页可以存储的索引越多,单次IO可以读到的信息越多,查询效率越高。
5.一般地InnoDB把 primary key作为聚簇索引,没有指定 primary key,则MySQL将唯一索引作为聚簇索引,如果也没有唯一索引,MySQL将创建一个隐藏索引GEN_CLUST_INDEX。
6.聚集索引就是以主键创建的索引,非聚集索引就是以非主键创建的索引,聚集索引的叶子节点存储的是表中的数据,非聚集索引的叶子节点存储的是主键和(辅助)索引列,拿到叶子节点上的存储的主键再去查询想要查询的数据,这个过程叫做回表。


在数据库术语中,特别是在SQL Server和一些其他数据库系统中,"clustered 索引"指的是一种特殊类型的索引,其中索引的物理顺序决定了表中数据行的物理存储顺序。在一个表中,只能有一个clustered 索引,因为你不能以两种不同的方式物理存储同一组数据行。

对于MySQL数据库,InnoDB存储引擎使用的是B+树索引模型,其中也有类似的概念,称为"主键索引"或"聚簇索引"。在InnoDB中,表数据实际上存储在聚簇索引的叶子节点上。如果表定义了PRIMARY KEY,那么这个主键索引就是聚簇索引;如果没有显式定义PRIMARY KEY,InnoDB会选择一个唯一索引作为聚簇索引;如果没有唯一索引,InnoDB会生成一个隐藏的row-id来作为聚簇索引。

因此,当你更新一个聚簇索引的列(无论是主键还是InnoDB自动选择的聚簇索引列)时,可能会导致InnoDB需要移动数据行到新的位置以保持索引的有序性,这确实是一个资源密集型的操作。这就是为什么通常建议避免频繁更新聚簇索引列的值,因为这会影响性能。

总结来说,clustered 索引数据列在MySQL的上下文中通常指的是InnoDB表的聚簇索引(主键索引)的列,而这些列的值的更新会影响到数据行的物理存储位置。

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值