《浅谈如何优化SQL语句提高数据库系统效率.docVIP

《浅谈如何优化SQL语句提高数据库系统效率.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《浅谈如何优化SQL语句提高数据库系统效率

浅谈如何优化SQL语句提高数据库系统效率 陈庆1 (1.扬州市中医院,江苏省扬州市,225009) 摘要:对于大型的企业或部门来说,每天都需要处理大量的数据业务,数据库系统的设计变的异常复杂,而数据库的性能的好坏直接影响到各项业务能否顺利进行。然而数据库优化涉及到许多方面,如:良好的系统和数据库设计;优质的SQL语句编写;合适的数据表索引设计等,甚至包括各种硬件因素,如:网络性能;服务器的性能;操作系统的性能等。如果只想通过升级硬件系统来提升性能将会付出很大的经济代价,通过优化SQL语句的编写提升数据库性能会是一个不错的选择。 关键词:数据库设计;数据库系统;数据库性能;SQL语句;优化 1 引言 SQL(Structured Query Language)结构化查询语言,是一种高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有在不同数据库系统上使用相同的SQL语言作为数据输入与管理的接口。它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。然而SQL语句的不同写法却会对数据库系统运行带来完全不同的效果,本文就如何优化SQL语句提升系统性能作一深入探讨。 2 优化SQL语句的好处 对于大部分基于数据库的应用程序来说,多数都是C/S或B/S架构,其与数据库的联系是通过客户端嵌入的SQL语句或调用数据库上的过程实现的。所以SQL语句质量的好坏会影响整个系统,因此优化SQL语句有以下几个好处:一是提高系统的运行效率,减少数据库死锁的风险;二是降低系统对硬件资源的消耗,节约投资;三是强化系统源代码的可读性,降低程序员修改程序的劳动强度。 3 合理使用数据库索引 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索引,可以在查询的过程中,使用优化器,提高系统的性能。 然而增加索引也有许多不利的方面。第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 因此在写SQL语句时要合理使用数据库索引,这会让你的数据库运行效果事半功倍。 4 优化SQL语句的方法 4.1 合理的使用各种操作符 首先要注意操作符的使用方法,虽然有时候不同的操作符实现的功能是一样的,但执行的效率却相差很多,这对于数据库的初学者是常常容易忽视的。 4.1.1 IN(NOT IN)与EXISTS(NOT EXISTS)操作符的区别 我们在调用数据的时候会将一列和一系列值相比较,最简单的办法就是在WHERE子句中使用子查询,而在WHERE子句中有两种方式的子查询。下面以zy_dxsfls,zy_brzlls两个表为例,如下所示: 第一种方式使用IN操作符, Select a.blh,a.sfks,a.sfrq,a.yzm,a.zfje,a.xzys From zy_dxsfls a where a.blh in (select b.blh from zy_brzlls b where b.csrq= 1970-1-1); 第二种方式使用EXIST操作符, Select a.blh,a.sfks,a.sfrq,a.yzm,a.zfje,a.xzys From zy_dxsfls a where exists (select 1 from zy_brzlls b where b.blh=a.blh and b.csrq=1970-1-1)。 虽然两种方法得出的结果是一样的,但是使用的时候却是有区别的。IN操作符适合于zy_brzlls表大而zy_dxsfls表小的情况,而EXISTS操作符适合于zy_brzlls表小而zy_dxsfls表大的情况。因此使用的时候应视情况而定,不能盲目使用,NOT

文档评论(0)

lisufan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档