核心
(1)不在数据库做运算cpu计算务必移至业务层
(2)控制单表数据量:单表记录控制在1000w
(3)控制列数量:字段数控制在20以内
(4)平衡范式与冗余:为提高效率牺牲范式设计,冗余数据
(5)拒绝3B:拒绝大sql,大事物,大批量
字段类
(1)用好数值类型
tinyint(1Byte)
smallint(2Byte)
mediumint(3Byte)
int(4Byte)
bigint(8Byte)
bad case:int(1)/int(11)
(2)字符转化为数字
用int而不是char(15)存储ip
(3)优先使用enum或set
例如:`sex` enum (‘F’, ‘M’)
(4)避免使用NULL字段
NULL字段很难查询优化
NULL字段的索引需要额外空间
NULL字段的复合索引无效
bad case:
`name` char(32) default null
`age` int not null
good case:
`age` int not null default 0
(5)少用text/blob
varchar的性能会比text高很多
实在避免不了blob,请拆表
(6)不在数据库里存图片
索引类
(1)谨慎合理使用索引
改善查询、减慢更新
索引一定不是越多越好(能不加就不加,要加的一定得加)
覆盖记录条数过多不适合建索引,例如“性别”
(2)字符字段必须建前缀索引
(3)不在索引做列运算
bad case:
select id where age +1 = 10;
(4)innodb主键推荐使用自增列
主键建立聚簇索引
主键不应该被修改
字符串不应该做主键
如果不指定主键,innodb会使用唯一且非空值索引代替
(5)不用外键
请由程序保证约束
sql类
(1)sql语句尽可能简单
一条sql只能在一个cpu运算
大语句拆小语句,减少锁时间
一条大sql可以堵死整个库
(2)简单的事务
事务时间尽可能短
bad case:
上传图片事务
(3)避免使用trig/func
触发器、函数不用
客户端程序取而代之
(4)不用select *
消耗cpu,io,内存,带宽
这种程序不具有扩展性
(5)OR改写为IN()
or的效率是n级别
in的消息时log(n)级别
in的个数建议控制在200以内
select id from t where phone=’159′ or phone=’136′;
=>
select id from t where phone in (’159′, ’136′);
(6)OR改写为UNION
mysql的索引合并很弱智
select id from t where phone = ’159′ or name = ‘john’;
=>
select id from t where phone=’159′
union
select id from t where name=’jonh’
(7)避免负向%
(8)慎用count(*)
(9)limit高效分页
limit越大,效率越低
select id from t limit 10000, 10;
=>
select id from t where id > 10000 limit 10;
(10)使用union all替代union
union有去重开销
(11)少用连接join
(12)使用group by
分组
自动排序
(13)请使用同类型比较
(14)使用load data导数据
load data比insert快约20倍;
(15)打散批量更新
相关推荐
本文将详细介绍一份针对MySQL数据库设计的规范文档,该文档根据重要程度分为【高危】、【强制】和【建议】三个级别,旨在帮助技术人员做出最适合线上业务需求的设计。 #### 二、基础规范 **1. 使用InnoDB存储引擎*...
数据库命名规范是数据库管理中的重要组成部分,它不仅有助于维护数据库的整洁和一致,还能提高开发人员之间的...以上原则和建议构成了一个通用的数据库命名规范,有助于数据库管理的规范化和提高数据库系统的可维护性。
该文档涵盖了Oracle和MySQL两大主流数据库系统的具体规范,并针对每种数据库的特点提出了相应的设计和开发建议。 #### 二、数据库整体设计规范 ##### (一)Oracle **1. 设计** - **避免多数据库间通过DBLINK...
Oracle数据库设计规范是数据库设计人员在构建高效、稳定和易于维护的数据存储系统时的重要参考。规范的目的是确保设计的合理性和一致性,预防由于设计不当引发的问题,并通过良好的设计习惯提升软件质量。 首先,...
本规范适用于所有数据库相关的编码活动,包括但不限于数据库表的设计、视图、索引、存储过程、触发器、函数以及其他数据库对象的创建和维护。无论是新建项目还是对已有数据库进行改造,都应该参照这些规范进行。 **...
Oracle数据库设计规范建议,所有数据库对象的命名应采用清晰的英文单词,并统一为大写,以避免大小写敏感可能带来的问题。例如,表名推荐使用前缀_T,视图使用_V,存储过程使用(PRO),函数使用FUN等,这样的命名约定...
《8数据库设计规范》文档是针对Oracle数据库设计的一份详细指南,旨在确保系统设计的统一、稳定和优化。本文档的编写目的是为了提供一套标准,让开发者在利用Oracle数据库进行系统设计时,能够遵循一致的规则,从而...
SQL 数据库设计规范 SQL 数据库设计规范是指在设计和开发数据库时的一系列规则和惯例,以确保数据库的正确性、安全性和可维护性。本规范涵盖了数据库设计的各个方面,包括编程规范、注释规范、标识符命名规范等。 ...
### Oracle数据库设计规范知识点 #### 一、数据库设计规范概览 Oracle数据库设计规范旨在为数据库设计、规划、开发及维护提供技术参考。规范涵盖了物理设计原则与逻辑设计原则两个方面,确保数据库系统的高效稳定...
在IT行业中,数据库命名规范是确保数据库设计清晰、易读、易维护的关键因素。遵循一套良好的命名规则可以提高代码的可读性,减少误解,同时也有助于团队协作和后期的数据库优化。以下是一些关于数据库命名规范的重要...
在构建统一的数据库代码规范时,命名规范是至关重要的,因为它直接关系到数据库的易读性和后续的维护工作。MSSQL Server作为广泛使用的数据库管理系统,需要遵循一套明确的命名规则来保证开发的一致性和规范性。 ...
根据提供的文件信息,本文将详细解析“Oracle数据库编程规范”的主要知识点,包括概述、书写规范、命名规范、注释规范、语法规范、脚本规范、性能优化、设计规范以及文档规范等内容。 ### 第一部分 概述 #### 1.1 ...
数据库设计是构建高效、稳定、可扩展的信息系统的基础,它涉及到多个方面的规范和原则。本手册将深入探讨数据库设计规范,旨在提供一个清晰的指导框架,确保数据库的命名、字段设计以及文档编制符合最佳实践。 首先...
数据库技术规范是确保数据存储、管理和检索效率的重要准则,对于任何组织来说,遵循这些规范都是确保数据库性能和数据完整性的关键。本文档主要涵盖了多个方面的内容,包括建表规范、使用范围、概述、书写规则、注释...
### MySQL数据库编程规范详解 #### 第一部分 概述 ##### 1.1 背景 随着企业数据量的增长和业务复杂度的提高,统一的数据管理标准变得尤为重要。本规范旨在标准化MySQL数据库的设计、实现与维护流程,确保数据的...
Oracle数据库设计规范旨在确保数据库设计的质量,预防潜在问题,并培养良好的编程习惯,从而提升软件的可靠性。规范涵盖了命名规范、设计原则等多个方面,适用于所有应用开发人员和参与数据库应用开发的软件人员。 ...
数据库开发规范是确保数据库设计和操作的一致性、可维护性和高效性的关键准则。在Oracle数据库环境下,遵循一套良好的开发规范对于提升系统性能、保证数据安全以及简化后期维护至关重要。以下将详细介绍标题和描述中...