- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ORACLE SQL 学习心得;讲解主要内容;数据库和应用系统性能; 随着软件技术的不断发展,系统性能越来越重要.
系统性能主要用系统响应时间和并发性来衡量,下面将主要讲解SQL影响的解
决方案讲解.
造成SQL语句性能不佳大致有两个原因(忽略了机器、数据库和设计的原因):
1):开发人员只关注查询结果的正确性,忽视查询语句的效率。
2):开发人员只关注SQL语句本身的效率,对SQL语句执行原理、影响SQL执行效率的主要因素不清楚。
前者可以通过深入学习SQL语法及各种SQL调优技巧进行解决。SQL调优是一个系统工程,熟悉SQL语法、掌握各种内嵌函数、分析函数的用法只是编写高效SQL的必要条件。后者从分析SQL语句执行原理入手,指出SQL调优应在优化SQL解析和优化CBO(cost-based SQL optimizer基于成本的优化器)上。;SQL*Plus;ORACLE优化器;选择使用优化器简单介绍:;什么是好的SQL语句?;SQL的共???原理;SQL的共享原理;具体SQL性能的优化; 如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.
例如: EMP表描述了LOCATION表和CATEGORY表的交集.
SELECT * FROM LOCATION L , CATEGORY C, EMP E
WHERE E.EMP_NO BETWEEN 1000 AND 2000
AND E.CAT_NO = C.CAT_NO AND E.LOCN = L.LOCN
?将比下列SQL更有效率
SELECT * FROM EMP E , LOCATION L , CATEGORY C
WHERE E.CAT_NO = C.CAT_NO AND E.LOCN = L.LOCN
AND E.EMP_NO BETWEEN 1000 AND 2000
; 2、 ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
例如:
SELECT … FROM EMP E
WHERE SAL 50000 AND JOB = ‘MANAGER’
AND 25 (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);
(低效)
SELECT … FROM EMP E
WHERE 25 (SELECT COUNT(*) FROM EMP
WHERE MGR=E.EMPNO) AND
SAL 50000 AND JOB = ‘MANAGER’;(高效);3、SELECT子句中避免使用 ‘ * ‘
当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘*’ 是一个方便的方法.不幸的是,这是一个非常低效的方法. 实际上,ORACLE在解析的过程中, 会将’*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间.
4、 减少访问数据库的次数
当执行每条SQL语句时, ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等等. 由此可见, 减少访问数据库的次数 , 就能实际上减少ORACLE的工作量.
; 5、整合简单,无关联的数据库访问
如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系,虽然采取这种方法,效率得到提高,但是程序的可读性大大降低,所以读者 还是要权衡之间的利弊)
例如: SELECT NAME FROM EMP WHERE EMP_NO = 1234;
?SELECT NAME FROM DPT WHERE DPT_NO = 10 ;
SELECT NAME FROM CAT WHERE CAT_TYPE = ‘RD’;
上面的3个查询可以被合并成一个:?;?SELECT E.NAME , D.NAME , C.NAME
FROM CAT C , DPT D , EMP E,DUAL X
WHERE NVL(‘X’,X.DUMMY) = NVL(‘X’,E.ROWID(+))
AND NVL(‘X’,X.DUMMY) = NVL(‘X’,D.ROWID(+))
AND NVL(‘X’,X.DUMMY) = NVL(‘X’,C.ROWID(+))
AND E.EM
您可能关注的文档
- 保险的理解核保理赔.ppt
- 段立志--裂隙方解石脉中的油气包裹体.ppt
- 劳务派遣说明书.ppt
- 第十课 谁为我们护航(社会保护 司法保护).ppt
- 估价师继续教育4——抵押贷款.ppt
- 创业时期应关注的财务风险1.ppt
- 铁路土工试验培训.ppt
- 祝福雅安主题班会.ppt
- 第4节 温度的测量课件1.ppt
- 八年级科学上册3-5体温的控制.ppt
- 2025年在线法律服务平台的法律咨询与案件处理效率提升方案报告.docx
- 农业生物技术推动2025年农业种质资源创新:基因驱动技术在抗病育种中的应用前景展望.docx
- 航空发动机智能运维2025年智能化维修市场潜力与产业生态优化路径与策略创新驱动驱动报告.docx
- 新零售背景下实体书店如何实现线上线下融合的物流配送体系优化报告.docx
- 2025年金融监管领域区块链技术应用案例解析与发展趋势分析深度报告.docx
- 2025年短视频平台与长视频平台内容版权保护技术发展趋势研究报告.docx
- 2025年教育培训行业在线直播教学技术创新与效果评估报告.docx
- 数字音乐行业版权运营市场前景与版权保护策略研究报告.docx
- 2025年自动驾驶出租车(Robotaxi)商业模式创新与智能调度系统应用报告.docx
- 农业科技园区现代农业技术与装备应用报告(2025).docx
文档评论(0)