数据库优化包括数据库的优化、数据库表的优化、程序操作的优化三个部分。本文是第二部分。

优化(1):设计标准化表以消除数据冗余
数据库范式是一种数据库设计方法,保证数据库结构合理,满足各种查询的需要,避免数据库的异常操作,满足范式要求的表称为标准表。范式出现于20世纪70年代初,通用表设计符合前三种范式。我们可以简单地介绍一下前三种范式。
让我们先来看看百度百科给出的定义。
无重复第一范式(1NF)
第一范式(1NF)是指关系模型,对标准的域添加要求,所有的字段应该是原子的,即每个数据项的数据库表是原子的不可分割的,并且不能设置,对非原子数据项数组记录。
第二范式(3NF)属性
在1NF的基础上,非码属性必须完全依赖于代码{消除非主属性的部分函数依赖在1NF基础上的主要代码}。
第三范式(3NF)属性
在1NF的基础上,任何非主属性不依赖于其它非主属性{消除传递依赖2NF的基础}
通俗的解释(可能不是最科学、最准确的理解)
第一范式:属性的原子性约束(领域),这就要求属性是原子的不可分割的一次。
第二范式:记录的唯一性约束,要求记录具有唯一的标识。每个记录都需要有一个属性作为实体的唯一标识。
第三种范式是对属性(字段)冗余的限制,也就是说,任何字段都不能从其他字段派生出来。在流行的观点中,必须剔除与主键不直接相关的数据列。消除它的方法是创建另一个表来存储它们,当然,除了外键。
如果数据库设计是完全标准化的,那么所有的表都可以通过关键字链接,没有任何数据重复(重复),标准化的优势显而易见。它避免了数据冗余,节省了空间。它为数据一致性(一致性)提供了根本保证,消除了数据不一致的现象,提高了效率。
优化(2):适当的冗余和增加的计算
数据库设计的实用原则是在数据冗余和处理速度之间找到合适的平衡点。
满足范式的表必须有一个规范化的表,但它未必是最好的设计。在许多情况下,为了提高数据库的运行效率,往往需要降低范式标准:适当增加冗余来实现空间换时间的目的。例如,我们有一个表,该产品的名称、单价、库存量、总价值。本表不满足第三范式,因为总值可乘以单价,表明量是一个冗余字段。但是,增加多余的这场总价值提高查询统计的速度,这是以空间换时间的方式,合理的冗余。可以分散大数据表的并发压力,加快特殊查询的速度。冗余字段可以有效地减少数据库表的连接,提高效率。
总的值是一个计算列。数据库中有两种数据:数据列和计算列。数据列是我们需要手动或程序分配的列。计算的列来自表中的其他数据,例如这里的总值。
在sql中创建一个计算列:
复制代码代码如下所示:
创建表的表

小数(18,4),
价格的钱,
数量为*价格-这是计算列


在重新设计中手动地添加或修改列属性也是可能的:
无论是持久性还是非持久性,我们也需要注意:
如果是否,则显示该列是一个虚拟列,每个查询计算一次,它不能用于检查外键或非空约束。
如果它是是,它是一个真正的列,它不需要每次计算,索引可以在这个列上创建,等等。
优化指数
索引是表优化的一个重要指标。它在表优化中占有非常重要的地位。我们将单独写一章SQL索引,并告诉你如何设置和优化索引。
优化:密钥和外键的必要性
主密钥和外部密钥的设计在全局数据库的设计中起着非常重要的作用,因为主键是实体的抽象,主键与外键相匹配,表示实体之间的连接。
关键:根据第二种范式,需要一个字段来识别记录,主键无疑是最好的标志,但很多也不必是主键,但是对于大量的数据,频繁查询数据库表必须有主键主键才能提高效率,防止重复等。
主键的选择也很重要。一般来说,键越小,键越小,而较小的键可以使主键的B结构变小。
主键的选择也要注意主键组合的字段顺序。对于组合主键,不同字段顺序主键的性能差异可能很大。一般来说,应该选择低重复率和单一或组合查询的字段。
外键:外键作为数据库对象,很多人认为它很麻烦。实际上,外键在大多数情况下非常有用。原因是:外键是最有效的一致性维护方法。
数据库的一致性要求可以采用外键、检查约束、规则约束、触发器和客户端程序等方法。一般来说,数据越接近,数据库的效率就越高。
谨慎使用级联删除、级联更新,级联删除、级联更新SQL Server 2000在今年的新功能,并一直保持在2005,这应该是可用的。我这里说的是谨慎的,因为级联级联删除更新一些突破传统的外键的定义,功能太强大了点,需要确保他们有一个很好的把握它的功能范围,或使用前,级联级联删除更新可能会使您的数据被修改或丢失的精彩。在性能方面,级联删除、级联更新是比其他方法更有效。
优化:适当使用存储过程、视图和函数
很多人习惯于在应用层上进行复杂的操作。但是,如果要优化数据访问性能,将SQL代码移植到数据库(使用存储过程、视图、函数和触发器)是一个很大的改进。
1、存储过程减少了网络传输、处理和存储的工作量。编译优化后,存储速度快,维护方便。当表的结构发生变化时,它不会影响客户端的应用程序。
2。使用存储过程、视图和函数有助于减少应用程序中SQL复制的弊端,因为它现在只集中在一个地方处理SQL。
三.执行所有的TSQL使用数据库对象有助于分析TSQL性能问题,并帮助您集中管理TSQL代码和更好的重构TSQL代码
优化三原则:小传奇
(1)数据库越少越好。
2:桌子越小越好。
3:组合主键和组合索引在字段中的组合越少越好。
当然,少数是相对的,减少数据冗余是一个重要的设计概念。
优化:拆分表,减少表大小
如果发现表的记录太多,例如超过一千万,则该表是水平拆分的,水平分割的方法是将表的记录级别划分为两个表,其中表的主键之一的值作为边界。
如果发现表中有太多字段,例如超过八十,则表将垂直拆分,原始表被分解为两个表。
优化设计原则:田间
字段是数据库最基本的单元,它的设计对性能有很大的影响:
a、数据类型和数字类型一样,数字类型比较要快于字符类型。
B,数据类型尽可能小,这里的最小值是为了满足可预见的未来需求。
c,不允许null,除非必要,可以替换为非空+默认值。
d,文本和图像使用较少,二进制字段读写较慢,阅读方法不多,在大多数情况下最好使用。
e,应谨慎使用自增字段,不利于数据迁移。