Mysql使用规范化之索引规范

索引类型

  • 普通索引
    • 创建索引 [idx_列名]
      • 例如 CREATE INDEX 索引的名字 ON tablename (列名);
    • 修改表
      • 例如 ALTER TABLE tablename ADD INDEX 索引的名字 (列名);
    • 创建表
      • 例如 CREATE TABLE tablename ( […], INDEX 索引的名字 (列名) );
  • 唯一索引 [uk_列名]
    • 创建索引
      • 例如 CREATE UNIQUE INDEX 索引的名字 ON tablename (列的列表);
    • 修改表
      • 例如 ALTER TABLE tablename ADD UNIQUE 索引的名字 (列的列表);
    • 创建表
      • 例如 CREATE TABLE tablename ( […], UNIQUE 索引的名字 (列的列表) );
  • 主键索引 [pk_列名]
    • 主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”。如果你曾经用过AUTO_INCREMENT类型的列,你可能已经熟悉主键之类的概念了。主键一般在创建表的时候指定,例如“CREATE TABLE tablename ( […], PRIMARY KEY (列的列表) ); ”。但是,我们也可以通过修改表的方式加入主键,例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”。每个表只能有一个主键。 (主键相当于聚合索引,是查找最快的索引)
  • 组合索引 [idx_列名_列名…n]
    • 创建索引
      • 例如 CREATE INDEX 索引的名字 ON tablename (列名1,列名2,…);
    • 修改表
      • 例如 ALTER TABLE tablename ADD INDEX 索引的名字 (列名1,列名2,…);
    • 创建表
      • 例如 CREATE TABLE tablename ( […], INDEX 索引的名字 (列名1,列名2,…) );

索引使用规范

  1. 单表索引数量不得超过5个。
  2. 单个索引中的字段不得超过5个。
  3. 索引名称必须全部使用小写。
  4. 非唯一索引命名规范,“idx_字段名称”。例如:idx_name
  5. 唯一索引命名规范,“uniq_字段名称”。例如:uniq_name
  6. 组合索引命名规范,“dx_字段名称[多个字段则在后续 _字段名称]”,建议包含所有字段名称,过程的字段名称可采用缩写。例如:idx_name_age_sex_brithday -> idx_n_a_s_b
  7. 表必须存在主键,推荐使用 [UNSIGNED属性就是将数字类型无符号化]自增列作为使用主键。
  8. 唯一键由3个以下字段组成,并且字段都是(整)(形)(时),可使用唯一键作为主键。其他情况下,建议使用自增列或发号器作主键。
  9. 禁止冗余索引。(影响insert、update、delete操作效率)
  10. 禁止重复索引 。(影响insert、update、delete操作效率)
  11. 禁止使用外键。
  12. 联表查询是,join列的数据类型必须为相同类型,并且建立索引。
  13. 不允许在低基数列上建立索引,例如:性别
  14. 选择区分度大的列建立索引。组合索引中,区分度大的字段放在最前面。
  15. 对字符串使用前缀索引,前缀索引长度不得超过8个字符。
  16. 不允许对过长的 VARCHAR 字段建立索引。建议优先考虑前缀索引或添加CRC32或MD5伪列建立索引。
  17. 合理创建组合索引,例如(a,b,c)相当于 (a)、(a,b)、(a,b,c)。
  18. 合理使用覆盖索引减少IO,避免排序。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值