SQL语句优化东软软件公司课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《SQL语句优化东软软件公司课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 语句 优化 软软 公司 课件
- 资源描述:
-
1、SQLSQL语句优化语句优化东软股份社保医疗卫生夏淼主要内容nSQL语句优化原则nPL/SQL Developer用法简介n使用SQL语句监控数据库性能SQL语句优化原则n合理使用索引提高查询速度合理使用索引提高查询速度通常情况下,使用索引要比全表扫描块几倍乃至几千倍!n不合理的索引不合理的索引n检索数据量超过表中30%的记录数,使用索引将没有显著的效率提高,有些时候甚至会比全表扫描慢。n一个表中的索引并不是越多越好!索引过多增加系统开销。用不上索引的用不上索引的SQLSQL语句语句n使用不等于操作符使用不等于操作符(,!=)(,!=)SELECT*FROM dept WHERE staff_
2、num 1000;SELECT*FROM dept WHERE staff_num 1000;n使用使用 is null is null 或或 is not nullis not null任何包含null值的列都将不会被包含在索引中。解决这个问题的办法就是:建表时把需要索引的列定义为非空(not null)n索引列使用函数或计算索引列使用函数或计算SELECT*FROM fin_ipb_feeinfo WHERE trunc(fee_date)2007-01-01;SELECT*FROM fin_ipb_feeinfo WHERE fee_date to_date(2007-01-01,yyy
3、y-mm-dd);WHERE sal*1.1950 WHERE sal950/1.1 用不上索引的用不上索引的SQL语句语句n索引列与比较值数据类型不一致索引列与比较值数据类型不一致emp_no:NUMBER型WHERE emp_no=123(好)WHERE emp_no=123(也可)emp_type:CHAR型 WHERE emp_type=123(此时,查询时,不利用索引列)WHERE emp_type=123 n复合索引,必须使用主索引列复合索引,必须使用主索引列例:复合索引(deptno,job)WHERE deptno=20 AND job=MANAGER WHERE deptno
4、=20 WHERE job=MANAGER AND deptno=20 WHERE job=MANAGER 用不上索引的用不上索引的SQL语句语句nlikelike子句子句WHERE name LIKE 王%WHERE name LIKE%王%WHERE name LIKE%王 用不上索引的用不上索引的SQL语句语句nORDER BY子句列的顺序与索引列的顺序一致,列应为非空列。n使用表的别名多表连接时,使用表的别名来引用列。例:SELECT abc002,abd003FROM ab001,ab020 WHERE ab001.col2=ab020.col3 SELECT t1.abc002,t
5、2.abd003FROM ab001 t1,ab020 t2WHERE t1.col2=t2.col3 SQL语句优化语句优化n用NOT EXISTS代替NOT IN 例:SELECT.FROM emp WHERE dept_no NOT IN(SELECT dept_no FROM dept WHERE dept_cat=A);SELECT.FROM emp e WHERE NOT EXISTS(SELECT X FROM dept WHERE dept_no=e.dept_no AND dept_cat=A);SQL语句优化语句优化n用多表连接代替EXISTS子句例:SELECT.FROM
6、 emp WHERE EXISTS(SELECTX FROMdept WHEREdept_no=e.dept_no ANDdept_cat=A);SELECT.FROM emp e,dept d WHERE e.dept_no=d.dept_no AND dept_cat=A;SQL语句优化语句优化n用用UNION ALLUNION ALL替换替换UNION(UNION(如果有可能的话如果有可能的话)当SQL语句需要UNION两个查询结果集合时,这两个结果集合会以UNION-ALL的方式被合并,然后在输出最终结果前进行排序。如果用UNION ALL替代UNION,这样排序就不是必要了。效率就会
展开阅读全文