数据库优化

1、为什么要写这个

需求推动技术学习得动力。

2、数据库优化方向

1) SQL语句和索引
2)数据表结构
3)系统配置
4)硬件
从上往下,成本由低到高。

3、根据索引优化

在说索引之前,先说下数据库是如何查数据库的,在这里以Sql Server为例

数据读取,分为:物理读取、逻辑读取、和预读取

预读取:根据数据库生成的查询计划,判断从物理磁盘中读取多少数据

物理读取:数据初始是存在磁盘中的,所以第一次读取数据,要将数据从磁盘中读到内存中。SQL Server 物理读取数据是按照页读取的,每页大概8KB

逻辑读取:就是从内存中根据条件筛选数据

如何理解索引:
理解索引的方式:就像我们查字典一样,索引就相当于字典的目录,我们可以根据拼音查询,或者根据偏旁查询
索引又分为:聚集索引 和 非聚集索引

聚集索引:何为聚集索引,就是具有物理性质的索引。此索引和数据顺序一致,而存到数据库表中的数据顺序只会有一个,所以聚集索引也只能有
一个。

非聚集索引:逻辑上的索引。对任一一个字段进行排序后的索引,所以该索引可以有多个。

使用索引的好处:就像查汉语字典一样 ,按照拼音查,或者偏旁查,会很快查到对应的字,所以就是查询效率就会快。
使用索引的缺点:当字典有目录的时候,字典就会变厚,变重,同样,数据库中的索引,也会占有空间,同时对数据的增加、删除和修改,效率会下降。
比如你要删除字典中的一个字,你既要删除这个字,又要更新目录,所以会影响,数据库增加、删除和更新的效率,有解决的办法,随后再说。

什么字段上创建索引

- 主键或者外键
- 关联表的字段上创建索引
- 被经常当作查询条件的字段
- 被当索引的字段的长度应该尽量小

什么时候用聚集索引或非聚集索引	
场景 是否使用聚集索引 是否使用非聚集索引
列经常被分组排序
返回某范围内的数据
频繁更新的列
主键列
外键列
以上内容仅供参考。

创建索引

通过语句进行创建

SQL Server 数据库下:
聚集索引:Create	clustered index indexName on Table(columnName)
非聚集索引:Create noclustered index indexName on Table(columnName)
删除索引:drop index Table.indexName

通过UI创建

通过数据库引擎优化顾问协助创建索引

   SQL Server 打开引擎优化顾问,设置相关配置,然后可以生成优化建议,包括分区建议,和索引建议。

以上内容主要是数据优化中,自己对索引作用,和创建的总结,下一篇,SQL优化。
posted @ 2020-04-07 22:14  小七要走  阅读(166)  评论(1编辑  收藏  举报