数据库和索引设计简要笔记
2021/12/15 2:21:52
本文主要是介绍数据库和索引设计简要笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
列设计规范
-
正确区分tinting、int、bigint的范围
-
使用varcher(20)存储手机号,不要使用整数(请求参数可能是字符串,防止类型的隐式转换)
-
使用int存储ipv4 不要使用char(15)
-
涉及金额使用decimal/varchar,并指定精度
-
不要设计为null的字段、而是用空字符,因为null需要更多的空间、并且是的索引和统计变得更为复杂。
索引规范
-
唯一索引使用uniq_[字段名]来命名
-
非唯一索引使用idx_[字段名]来命名
-
不建议在频繁更新的字段上建立索引
-
单张表的索引数量建议控制在5个以内,索引过多,不仅会导致插入的性能下降,还可能导致mysql的索引出错和性能下降
-
组合索引字段数量不建议超过5个,理解组合索引的最左匹配原则,避免重复建设索引,比如你建良(x,y,z)相当于你建了(x)(x,y) (x,y,z)
SQL规范
-
禁止使用select *,只获取必要字段,select会增加cpu/io/内存、带宽的消耗。
-
Insert 必须指定字段,禁止使用insert into table values()指定字段插入,在表结果变更时,能保证对应用程序无影响。
-
隐式类型转换会使索引失效,比如:手机号搜索时没有转成字符串
-
禁止在where后面的列中使用函数或者表达式,导致不能命中索引。
-
禁止负向查询(!= not like not in等 )以及%开头的模糊查询,导致不能命中索引。
-
避免直接返回大结果导致造成内存溢出,可以采用分段和游标方式。
-
返回结果尽量采用limit分页显示。
-
尽量在order by group by的列上创建索引。
-
大表扫描尽量放在镜像库上去做。
-
禁止大表join查询和子查询。
-
尽量避免数据库内置函数作为查询条件。
这篇关于数据库和索引设计简要笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南