SQL优化的几个方面_第1页
SQL优化的几个方面_第2页
SQL优化的几个方面_第3页
SQL优化的几个方面_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQL 优化的几个方面sql 数据库优化非常重要,如果 sql 数据库优化的不好, 不仅会增加客户端和服务器端程序的编程和维护的难度,而 且还会影响系统实际运行的性能。 那我们可以从哪些方面来进行 sql 数据库优化呢? 一:就是合理的数据库的设计。 当前我们使用最多的就是关系型数据库,关系数据库设计是 对数据进行组织化和结构化的过程,核心问题是关系模型的 设计。对于数据库规模较小的情况,我们可以比较轻松的处 理数据库中的表结构。然而,随着项目规模的不断增长,相 应的数据库也变得更加复杂,关系模型表结构更为庞杂,这 时我们往往会发现我们写出来的 SQL 语句的是很笨拙并且 效率低下的。更糟糕的

2、是,由于表结构定义的不合理,会导 致在更新数据时造成数据的不完整。因此数据库的规范化流 程尤为重要,它可以以指导我们更好的设计数据库的表结 构,减少冗余的数据,借此可以提高数据库的存储效率,数 据完整性和可扩展性。 那怎么才算是规范化的设计流程:规范化设计的过程就是按 不同的范式,将一个二维表不断地分解成多个二维表并建立 表之间的关联,最终达到一个表只描述一个实体或者实体间 的一种联系的目标。目前遵循的主要范式包括 1NF、 2 NF、3 NF 、 BCNF 、4NF 和 5NF 等几种;在工程中 3NF、 BCNF 应用得最广泛,推荐采用3NF 作为标准。规范化设计的优点包括可有效地消除数据

3、冗 余,理顺数据的从属关系,保持数据库的完整性,增强数据 库的稳定性、伸缩性、适应性。通常认为规范化设计存在的 主要问题是增加了查询时的连接库表运算,导致计算机时 间、空间、系统及运行效率的损失。在大多数情况下,这一 问题可通过良好的索引设计等方法得到解决。数据库设计中 关键的步骤就是要确保数据正确地分布到数据库的表中。 比如说,一个客户的地址信息不应该被存储在不同的表中, 因为这里的客户地址是雇员的一个属性。如果存在过多的冗 余数据,这就意味着要占用了更多的物理空间,同时也对数 据的维护和一致性检查带来了问题,当这个客户的地址发生 变化时,冗余数据会导致对多个表的更新动作,如果有一个 表不幸

4、被忽略了,那么就可能导致数据的不一致性。 二:查询的优化 如何让你写的 SQL 语句跑的更快呢?影响我们代码速度的 都有哪些可能性呢?不恰当的索引设计、不充份的连接条件 和不可优化的 where 子句都有可能造成速度的下降。 首先来看看索引的建立。微软的 sqlserver提供了两种索引:聚集索引( clustered index,也称聚 类索引、簇集索引)和非聚集索引( nonclusteredindex ,也称非聚类索引、非簇集索引) ,聚集索引简单理解 就是数据的实际的存放位置:如我们的汉语字典正文本身就 是一个聚集索引,当我们知道要查的字拼音首字母为 A 时, 迅速缩小查询范围,翻到前

5、几页就可以很快找到了,避免全 表扫描,当然这种索引对于一个表只能有一个,因为只能按 照一种方法进行排序存放,所以一定得选择最合适的聚集索 引规则。非聚集索引,简单来说就是目录,比如字典中的偏 旁部首目录,当我们要查找数据的时候我们先通过目录缩写 范围,再进行查询目标的确认。下表我们可以作为参考建立 适合的索引索引有助于提高检索性能,但过多或不当的索引 也会导致系统低效。因为用户在表中每加进一个索引,数据 库就要做更多的工作。过多的索引甚至会导致索引碎片。所 以合适的索引才能使数据库得到性能的提高。 再者就是连接条件:其实在多表链接操作被实际执行前,查 询优化器会根据连接条件,列出几组可能的连接

6、方案并从中 找出系统开销最小的最佳方案。连接条件要充份考虑带有索 引的表、数据记录数多的表; 可以打开执行计划,看具体的执行情况,哪些环节的资源的 占用大,是否可以优化查询或者优化结构。另外:动态管理 视图(DMV)和动态管理函数(DMF)返回的服务器状态信息可 用于监控服务器实例的运行状况、诊断问题和优化性能。如:查找哪些批处理 /请求生成的 I/O 最多、查询以查看 CPU 、 计划程序内存和缓冲池信息、 CPU平均占用率最高 SQL 语句等。涉及的视图及函数如下:sys.dm_exec_sql_text 、dm_exec_query_stats、 dm_os_sys_info 、dm_exec_cached_plans、dm_exec_query_plan、等三:就是 where 条件 我们建立了索引就不是就可以使查询的速度达到最快,而是 在查询的时候要使用到索引,才会优化我们的查询速度。比 例根据部门列建立了索引,但是我们在使用部门的查询条件 的时候用 %XXX% ,此种条件是使用不到索引的, 如下 like 便可以 XXX% ;UNION 在进行表链接后会筛选掉重复的 记录,而往往重复的基本上不存在,可以采用 UNIONALL 操作符替代 UNION ,因为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论