Oracle数据库应用与开发案例教程电子教案王红 11.第十一章 SQL语句优化.pptVIP

Oracle数据库应用与开发案例教程电子教案王红 11.第十一章 SQL语句优化.ppt

  1. 1、本文档共21页,可阅读全部内容。
  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文档。上传文档
查看更多
Java Web开发技术 Java Web开发技术 Oracle数据库应用 与开发案例教程 主编 王红 中国水利水电出版社 Oracle数据库应用 与开发案例教程 第十一章 SQL语句优化 第八章 PL/SQL编程 11.1 SQL语句优化概述 11.2 SQL优化的一般原则 11.3表的连接方法 11.4有效使用索引 11.1 SQL语句优化概述 进行SQL语句优化的原因 编写规范且高效的SQL语句显然是数据库性能优化中非常重要的一项工作,因为不同的SQL实现方式之间的效率差异可能会非常大,尤其是在大数据量的数据库环境下,在一个千万级别数据量数据库的几个关联的大表之间执行一条SELECT语句可能会耗费相当长的时间,直接降低了数据库系统的性能,并导致整个软件系统运行速度下降,效率低下。 为了提高数据库的整体性能,需要如何分辨那些导致性能低下的SQL语句,并按照相应的原则调整优化。 11.1 SQL语句优化概述 SQL语句执行的一般顺序 1. 解析 ① 在共享池中查找相同的SQL语句。 ② 语法分析 ③ 语义分析 ④ 对象加锁 ⑤ 权限检查 ⑥ 确定执行计划 ⑦ 保存执行计划 2. 执行 3. 提取 11.2 SQL优化的一般原则 SELECT语句中避免使用“*” 在写SQL语句时,虽然使用“*” 表示表的所有列可以降低编写SQL语句的难度,但是建议把表的实际列名都写在SQL语句中来提高其执行效率。 【例题11-1】在SELECT语句中分别使用“*”和使用具体的列名来查询并显示ZICHANMINGXI所有记录。 11.2 SQL优化的一般原则 编写SQL时使用相同的编码风格 在编写SQL语句时,建议使用相同SQL语句的编码风格,使多条完全相同的SQL语句在系统中只被解析一次。 【例题11-2】使用了不同的编码风格对zichanzhuangtai表执行查询操作。 11.2 SQL优化的一般原则 使用WHERE子句代替HAVING子句 在有分组函数的SQL语句中,应该通过WHERE子句限制记录的数目而避免使用HAVING子句,即通过先用WHERE子句过滤记录,再使用HAVING子句过滤分组的方式来减少这方面的开销,提高SQL性能。 【例题11-3】对ZICHANMINGXI表进行操作,求出每个部门资产原值的平均值,并将BMID列的值为‘zcc’的记录信息过滤掉。 11.2 SQL优化的一般原则 使用TRUNCATE代替DELETE 在执行删除操作时,如果确定要删除表中的全部记录,尽量使用TRUNCATE子句。 【例题11-4】使用SELECT语句创建一两个完全相同的表ZICHANMINGXI1和ZICHANMINGXI2,然后分别使用DELETE语句和TRUNCATE语句执行删除操作。 11.2 SQL优化的一般原则 在确保完整的情况下多COMMIT 建议在保证系统正常业务逻辑的情况下,在执行DML操作时,应及时使用COMMIT提交事务,这样可以及时结束事务,释放事务所占用的资源。COMMIT所释放的资源有: 1. 回滚段上用于恢复数据的信息. 2. DML语句造成的锁 3.重做日志缓存区的空间 4. ORACLE为维护事务的内部开销 【例题11-5】当向ZICHANLEIXING表中插入一行记录后,在确保数据完整性的情况下,及时使用COMMIT提交事务。 11.2 SQL优化的一般原则 使用EXISTS替代IN IN操作符用于检查一个值是否包含在列表中,而EXISTS只是检查行的存在性。在子查询中,EXISTS提供的性能通常比IN提供的性能要好,因此建议用EXISTS来替代IN。 【例题11-6】分别用IN和EXISTS实现下列查询操作:查询资产状态为“bf01”的资产所在的部门信息。 11.2 SQL优化的一般原则 用EXITST替代DISTINCT 在连接查询的SELECT语句中,当需要使用DISTINCT关键字来过滤重复的查询结果行时,DISTINCT通常需要先对查询结果进行排序,然后才限定在查询结果中显示那些不重复的数据列,这一过程也会增加额外的系统开销。因此,在SQL语句中应该尽量用EXITST替代DISTINCT。 【例题11-7】分别使用EXITST和DISTINCT对YONGHU表和BUMEN表进行操作。 11.2 SQL优化的一般原则 使用表连接而不是多个查询 当需要从多个表中查询数据时,建议使用多表连接的SQL语句执行一次查询操作得到所需的数据,尽量减少对子查询或子查询嵌套的使用, 【例题11-8】分别在SELECT语句中使用嵌套子查询和表连接来查询部门名称是组织部的用户名称和部门id等信息。 11.2 SQL优化的一般原则 使用

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档