第十三章 Sq语句优化 主讲内容: SELECT-子句、 WHERE子句的优 化等
第十三章 SQL语句优化 主讲内容:SEL ECT子句、 WHERE子句的优 化等;
ORACL∈ ··复习上节课内容 1.用户帐号管理(创建、编辑、删除) 2.权限管理(授予及回收系统权限、对象权限) 3.角色管理(创建、编辑、删除) 4.角色权限管理(授予、回收) 5.授权角色给用户 第2页
复习上节课内容 1. 用户帐号管理(创建、编辑、删除) 2. 权限管理(授予及回收系统权限、对象权限) 3. 角色管理(创建、编辑、删除) 4. 角色权限管理(授予、回收) 第 2 页 4. 角色权限管理(授予、回收) 5. 授权角色给用户
ORACL∈ ·。本节课内容 Sq语句优化概述 二.S軍语句优化技巧 其他优化方法 第3页
本节课内容 一.SQL语句优化概述 二.SQL语句优化技巧 三.其他优化方法 第 3 页 三.其他优化方法
ORACL∈ 0。一.S语句优化概述 由于0acle可以存储更多更复杂的数据,就使得数据的查 询效率显得更为重要,低效率的查询给实际应用带来的麻 烦事不可估量的; sq峿语句通常不需要告诉数据库如何获得数据,只需执行 查询、指定所需数据,数据库就会找到最好方法获得它。 第4页
一.SQL语句优化概述 • 由于Oracle可以存储更多更复杂的数据,就使得数据的查 询效率显得更为重要,低效率的查询给实际应用带来的麻 烦事不可估量的; • SQL语句通常不需要告诉数据库如何获得数据,只需执行 第 4 页 查询、指定所需数据,数据库就会找到最好方法获得它
ORACL∈ 0000 Sq句的优化就是将性能较低的Sq语句转换成达到同样 目的的性能优异的Sq语句; ·对于】语句、$吇句、N句和WK子句等 都可以进行优化,本课程将具体介绍不同情况下的优化技 巧。 第5页
• SQL语句的优化就是将性能较低的SQL语句转换成达到同样 目的的性能优异的SQL语句; • 对于DELETE语句、SELECT子句、FROM子句和WHERE子句等 都可以进行优化,本课程将具体介绍不同情况下的优化技 第 5 页 巧
ORACL∈ 。二、S语句优化技巧 1. Select子句的优化 2Wre子句的优化 3 TRINCAIESIEEIE 4使用表连接而不是多个查询 5使用SS替代IN 6使用BSS替代SNr 7.使用使用“<=”替代“<” 8使用表的别名 第6页
二、SQL语句优化技巧 1. Select子句的优化 2. Where子句的优化 3. TRUNCATE与DELETE 4. 使用表连接而不是多个查询 第 6 页 4. 使用表连接而不是多个查询 5. 使用EXISTS替代IN 6. 使用EXISTS替代DISTINCT 7. 使用使用“<=”替代“<” 8. 使用表的别名
ORACL∈ ·1 Select子句的优化 SC语句中避免使用“*”; 在SH句查询表的所有列时,可以使用动态S軍列 引用“*”,用来表示表中所有的列; 使用“*”替代所有的列,可以降低编写Sq语句的难 度,减少语句的复杂性,但是却降低了S语句执 行的效率。 第7页
1.Select子句的优化 • SELECT语句中避免使用“*” ; – 在SELECT子句查询表的所有列时,可以使用动态SQL列 引用“*”,用来表示表中所有的列; – 使用“*”替代所有的列,可以降低编写SQL语句的难 第 7 页 度,减少SQL语句的复杂性,但是却降低了SQL语句执 行的效率
ORACL∈ 0000 使用 SWTIINO语句显示执行时间 例1,检索so用户的c表,使用“*”来替代所有的列 名 SQL> SET TIMING ON SQL> SELECT* FROM scott. emp 已选择14行。 已用时间:::06.6 第8页
使用SET TIMING ON语句显示执行时间 • 例1,检索scott用户的emp表,使用“*”来替代所有的列 名; • SQL> SET TIMING ON 第 8 页 • SQL> SELECT * FROM scott.emp;
ORACL∈ 0000 例2检索s户的表,使用具体的列名 SQL> SELECT empno, ename, job, mgr, hiredate sal, comm, deptno FROM scott. emp 已选择14行。 已用时间:8:8g:881 第9页
• 例2,检索scott用户的emp表,使用具体的列名; • SQL> SELECT empno , ename , job , mgr , hiredate , sal , comm , deptno FROM scott.emp ; 第 9 页
ORACL∈ ●·。2Wrc子句的优化 在SC晤句中,使用W句过滤行,使用MVN 句过滤分组 行分组需要一定的时间,应该尽量使用W-re子句过滤行, 减少分组的行数,从而提高语句的执行效率。 第10页
2.Where子句的优化 • 在SELECT语句中,使用WHERE子句过滤行,使用HAVING子 句过滤分组; • 行分组需要一定的时间,应该尽量使用Where子句过滤行, 减少分组的行数,从而提高语句的执行效率。 第 10 页