mysql普通索引标记_Mysql 索引

1.聚集索引与主键设计

InnoDB是一个聚集索引组织表,即行数据是按照聚集索引在物理磁盘上存储的,并且是块状结构,默认一个block是16kB。

每张InnoDB表只能创建一个聚集索引,聚集索引可以由一列或多列组成。它的聚集索引选择规则是这样的:

首先选择显式定义的主键索引做为聚集索引;

如果没有,则选择第一个不允许NULL的唯一索引;

还是没有的话,就采用InnoDB引擎内置的ROWID作为聚集索引;

在设计表结构时,表一定要显式定义主键,自增主键,或者联合主键,或全局ID。并且索引设置为NOT NULL,如果允许NULL,那么在索引的每条记录上,都要多用一个标记去记录这个列是否是NULL,占用多余的存储空间。

自增主键一般是int或bigint型。

全局ID跟自增ID特性基本相同,但是它的值是从另外的服务获取的数字增长类型,不要UUID。只在有分库(一般有全局统计需求),或其它可能需要全局唯一性的情况下才使用。在做数据迁移或拆库时,可以无缝切换,因为新旧数据id不用担心重复。定义全局ID时,注意字段范围要满足要求,小心溢出。

主键的设计原则:

采用一个没有业务用途的自增属性列作为主键;

主键字段值总是不更新,只有新增或者删除两种操作;

不选择会动态更新的类型,比如当前时间戳等。

这么做的好处有几点:

新增数据时,由于主键值是顺序增长的,innodb page发生分裂的概率降低了;

业务数据有变更时,不修改主键值,物理存储位置发生变化的概率降低了,innodb page中产生碎片的概率也降低了。

2.辅助索引

辅助索引,就是我们常规所指的索引,原文是SECONDARY KEY。辅助索引里还可以再分为唯一索引,非唯一索引。

对于唯一索引,查询时只是需要多一次从辅助索引到主键索引的转换过程。而对于普通索引的查找检索到结果后,还需要至少再多检索一次才能确认是否还有更多符合条件的结果。

原文:https://www.cnblogs.com/lemos/p/9386025.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值