数据库索引规约

本文学习自阿里巴巴编码规范,只作为学习笔记,如需详细了解请自行查看阿里编码规范

1.业务上具有唯一特性的字段,哪怕是多个字段的组合,也必须要建成唯一索引。

2.需要join的字段,数据类型必须绝对一致,多表关联查询时,保证被关联到的表需要有索引。
即使双表 join 也要注意表索引、SQL 性能

3.在varchar字段上建索引时,必须设置索引的长度,根据实际文本区分度解决实际索引长度。
测试合适索引的长度
计算公式是:count(distinct left(c_address,20))/count(*)
当前字符串出现的数量/总量的一个比例,比例在95%左右最合适的。

4.页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决
索引文件具有 B-Tree 的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引。

5.如果有 order by 的场景,请注意利用索引的有序性。order by 最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现 file_sort 的情况,影响查询性能。
什么是file_sort
可以理解为外部排序,就是把select的数据,按照order by的列 ,在内存中进行一次排序,然后返回结果。
注意:索引中有范围查找,那么索引有序性无法利用,如:WHERE a>10 ORDER BY b; 索引a_b 无法排序。

6.建组合索引的时候,区分度最高的在最左边。
如果 where a=? and b=? ,a 列的几乎接近于唯一值,那么只需要单建 idx_a 索引即可。
说明:存在非等号和等号混合判断条件时,在建索引时,请把等号条件的列前置。如:where a>? and b=? 那么即使 a 的区分度更高,也必须把 b 放在索引的最前列。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值