- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NF
NF、 2 NF、3 NF 、 BCNF 、4NF 和 5NF 等几种;在工程中
SQL 优化的几个方面
sql 数据库优化非常重要,如果 sql 数据库优化的不好,
不仅会增加客户端和服务器端程序的编程和维护的难度,而
能。且还会影响系统实际运行的性能那我们可以从哪些方面来进行sql
能。
且还会影响系统实际运行的性能
那我们可以从哪些方面来进行
sql 数据库优化呢?
:就是合理的数据库的设计。
当前我们使用最多的就是关系型数据库,关系数据库设计是 对数据进行组织化和结构化的过程,核心问题是关系模型的 设计。对于数据库规模较小的情况,我们可以比较轻松的处 理数据库中的表结构。然而,随着项目规模的不断增长,相 应的数据库也变得更加复杂,关系模型表结构更为庞杂,这 时我们往往会发现我们写出来的 SQL 语句的是很笨拙并且 效率低下的。更糟糕的是,由于表结构定义的不合理,会导 致在更新数据时造成数据的不完整。因此数据库的规范化流 程尤为重要,它可以以指导我们更好的设计数据库的表结 构,减少冗余的数据,借此可以提高数据库的存储效率,数 据完整性和可扩展性。
那怎么才算是规范化的设计流程:规范化设计的过程就是按 不同的范式,将一个二维表不断地分解成多个二维表并建立 表之间的关联,最终达到一个表只描述一个实体或者实体间 的一种联系的目标。目前遵循的主要范式包括 1
3NF、 BCNF 应用得最广泛,推荐采用 3
NF 作为标准。规范化设计的优点包括可有效地消除数据冗 余,理顺数据的从属关系,保持数据库的完整性,增强数据 库的稳定性、伸缩性、适应性。通常认为规范化设计存在的 主要问题是增加了查询时的连接库表运算,导致计算机时 间、空间、系统及运行效率的损失。在大多数情况下,这 问题可通过良好的索引设计等方法得到解决。数据库设计中 关键的步骤就是要确保数据正确地分布到数据库的表中 比如说,一个客户的地址信息不应该被存储在不同的表中, 因为这里的客户地址是雇员的一个属性。如果存在过多的冗 余数据,这就意味着要占用了更多的物理空间,同时也对数 据的维护和一致性检查带来了问题,当这个客户的地址发生 变化时,冗余数据会导致对多个表的更新动作,如果有一个 表不幸被忽略了,那么就可能导致数据的不一致性。
二:查询的优化 如何让你写的 SQL 语句跑的更快呢?影响我们代码速度的 都有哪些可能性呢?不恰当的索引设计、不充份的连接条件 和不可优化的 where 子句都有可能造成速度的下降。
首先来看看索引的建立。微软的 sql
server 提供了两种索引:聚集索引(
server 提供了两种索引:聚集索引(
clustered index,也称聚
类索引、簇集索引)和非聚集索引( nonclustered
index,也称非聚类索引、非簇集索引)
index,也称非聚类索引、非簇集索引)
,聚集索引简单理解
就是数据的实际的存放位置:如我们的汉语字典正文本身就 是一个聚集索引,当我们知道要查的字拼音首字母为 A 时, 迅速缩小查询范围,翻到前几页就可以很快找到了,避免全 表扫描,当然这种索引对于一个表只能有一个,因为只能按 照一种方法进行排序存放,所以一定得选择最合适的聚集索 引规则。非聚集索引,简单来说就是目录,比如字典中的偏 旁部首目录,当我们要查找数据的时候我们先通过目录缩写 范围,再进行查询目标的确认。下表我们可以作为参考建立 适合的索引索引有助于提高检索性能,但过多或不当的索引 也会导致系统低效。因为用户在表中每加进一个索引,数据 库就要做更多的工作。过多的索引甚至会导致索引碎片。所 以合适的索引才能使数据库得到性能的提高。
再者就是连接条件:其实在多表链接操作被实际执行前,查 询优化器会根据连接条件,列出几组可能的连接方案并从中 找出系统开销最小的最佳方案。连接条件要充份考虑带有索 引的表、数据记录数多的表; 可以打开执行计划,看具体的执行情况,哪些环节的资源的 占用大,是否可以优化查询或者优化结构。另外:动态管理
视图(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 条件 我们建立了索引就不是就可以使查询的速度达到最快,而是 在查询
文档评论(0)