(29)用WHERE替代ORDER BY:
ORDER BY 子句只在两种严格的条件下使用索引。
ORDER BY中任何的列必须包含在相同的索引中并保持在索引中的排列顺序。
ORDER BY中任何的列必须定义为非空。
WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列。
例如: 表DEPT包含以下列:
DEPT_CODE PK NOT NULL
DEPT_DESC NOT NULL
DEPT_TYPE NULL
低效: (索引不被使用)
SELECT DEPT_CODE FROM DEPT ORDER BY DEPT_TYPE
高效: (使用索引)
SELECT DEPT_CODE FROM DEPT WHERE DEPT_TYPE > 0
(30)避免改变索引列的类型:
当比较不同数据类型的数据时, ORACLE自动对列进行简单的类型转换。 假设 EMPNO是个数值类型的索引列:SELECT … FROM
EMP WHERE EMPNO = ‘123'。 实际上,经过Oracle类型转换, 语句转化为: SELECT … FROM EMP
WHERE EMPNO = TO_NUMBER(‘123') 。
幸运的是,类型转换没有发生在索引列上,索引的用途没有被改变。现在,假设EMP_TYPE是个字符类型的索引列:SELECT … FROM EMP WHERE EMP_TYPE = 123 。
这个语句被Oracle转换为: SELECT … FROM EMP
WHERETO_NUMBER(EMP_TYPE)=123。因为内部发生的类型转换, 这个索引将不会被用到!
为了避免Oracle对您的SQL进行隐式的类型转换,最好把类型转换用显式表现出来。注意当字符和数值比较时,Oracle会优先转换数值类型到字符类
型。
(31)需要当心的WHERE子句:
某些SELECT 语句中的WHERE子句不使用索引。这里有一些例子:
(1)‘!=' 将不使用索引。记住, 索引只能告诉您什么存在于表中, 而不能告诉您什么不存在于表中。
(2)‘||'是字符连接函数。就象其他函数那样, 停用了索引。
(3)‘ '是数学函数。就象其他数学函数那样, 停用了索引。
(4)相同的索引列不能互相比较,这将会启用全表扫描。
(32)a. 假如检索数据量超过30%的表中记录数,使用索引将没有显著的效率提高。
b. 在特定情况下,使用索引也许会比全表扫描慢,但这是同一个数量级上的区别。而通常情况下,使用索引比全表扫描要块几倍乃至几千倍!
(33)避免使用耗费资源的操作:
带有DISTINCT,UNION,MINUS,INTERSECT,ORDER
BY的SQL语句会启动SQL引擎执行耗费资源的排序(SORT)功能。DISTINCT需要一次排序操作,而其他的至少需要执行两次排序。通常,带有
UNION, MINUS ,
INTERSECT的SQL语句都能够用其他方式重写。假如您的数据库的SORT_AREA_SIZE调配得好。使用UNION , MINUS,
INTERSECT也是能够考虑的, 毕竟他们的可读性很强。
(34)优化GROUP BY:
提高GROUP BY 语句的效率,能够通过将无需的记录在GROUP BY 之前过滤掉。下面两个查询返回相同结果但第二个明显就快了许多。
低效: SELECT JOB , AVG(SAL) FROM EMP GROUP JOB HAVING JOB =
‘PRESIDENT' OR JOB = ‘MANAGER' 高效: SELECT JOB , AVG(SAL) FROM EMP WHERE
JOB = ‘PRESIDENT' OR JOB = ‘MANAGER' GROUP JOB
分享到:
相关推荐
在《CAD绘图技巧之提高效率篇.pdf》这一文件中,主要讨论了如何通过不同的技术手段和操作技巧,在使用CAD绘图软件时提高绘图效率。文件指出,随着计算机和网络技术的迅速发展,CAD软件在工程绘图领域的应用日益广泛...
提高写代码的效率(编程篇) 在编程领域中,提高写代码的效率是每个程序员必须面对的挑战。本文将总结如何提高代码的书写效率和练习方法。通过分析常见的编程错误和解决方法,我们可以总结出两大关键点:养成好的...
- **一键通功能**:对于固定大小和格式的文档扫描识别,可以利用OCR软件的一键通功能提高效率;但如果是多样化的内容,则该功能可能不太适用。 ##### 2. 扫描过程中的注意事项 - **正确放置文档**:确保文档平整,...
在处理大量数据时,选择合适的排序算法可以显著提高效率。 3. 查找算法:二分查找、线性查找、哈希查找等,它们在寻找特定数据点时发挥着关键作用。理解不同查找算法的适用场景和性能差异是必要的。 4. 动态规划:...
5. **优化和调试技巧**:理解性能分析和调试工具是提高效率的关键。学会使用如Python的`cProfile`或JavaScript的`console.time()`来定位性能瓶颈。同时,使用断点、日志和单元测试来快速找到并修复bug,可以减少无效...
这份手册分为三个部分:基础篇、提高篇和精华篇,覆盖了从入门到高级的全面知识,适合不同水平的程序员学习。 **基础篇**: 在基础篇中,读者将学习到C语言的基本概念和语法。这部分通常包括变量、数据类型、运算符...
电子工程师的自学旅程涵盖了许多领域,本套资料包含“入门篇”、“设计篇”和“提高篇”,专门针对想要在电子工程领域深造的人群,尤其是对于FPGA、模拟电路和数字电路感兴趣的初学者和进阶者。这些关键知识点是电子...
这篇文章将介绍如何使用 GDI+ 的双缓冲技术来提高绘图效率。 GDI+ 的双缓冲技术可以简单地理解为将绘图操作缓存在内存中,然后将其快速地绘制到屏幕上,从而提高绘图效率。这种技术可以减少屏幕刷新的次数,并且...
动态规划的特点是将问题分解成子问题,通过存储子问题的解避免重复计算,从而提高效率。理解和掌握动态规划思想,能有效解决许多看似无解的复杂问题。 最后,数论在密码学、安全领域以及算法设计中占据重要地位。模...
在提高篇中,课程会深入到更高级的主题,如快速傅里叶变换(FFT)及其算法优化,它极大地提高了频谱分析的效率。此外,还会涉及数字信号处理中的高级话题,如多率信号处理、数字下变频(DDC)、自适应滤波器以及现代...
本篇文章将深入探讨如何提高GDI绘图的性能和效率,并涉及到DirectDraw的相关技术。 首先,"基于MFC的DirectDraw高速图形绘制方法与应用.pdf"这篇文章可能会讨论如何利用Microsoft Foundation Class (MFC)库来整合...
在这篇文章中,我们将分享一些提高效率的经验和方法。 首先,在产品规划阶段,多人协作是必不可少的。这个阶段需要团队成员之间的紧密合作,共同完成产品的设计和开发。在这个过程中,如何才能提高效率是一个非常...
13. **提高滑轮组机械效率的措施**:添加润滑油可以减小摩擦,从而提高效率;而增加提升高度或更换更重的滑轮则会降低效率。 14. **探究斜面机械效率实验**: - 斜面倾角与机械效率的关系:斜面倾角增大,机械效率...
《信捷触摸屏用户手册提高篇之高级功能》是一份专...总之,《信捷触摸屏用户手册提高篇之高级功能》是提升用户技术水平的重要资料,通过深入学习,用户不仅可以提升个人技能,也能助力企业的自动化升级和生产效率提升。
调整好工作或学习空间的光线和温度,也能帮助保持舒适,提高效率。 时间管理是另一个关键因素。使用番茄工作法,即25分钟全神贯注工作后休息5分钟,能有效避免疲劳,提高工作效率。对于长期项目,制定明确的计划和...
良好的编程习惯也是提高效率的关键。在编程前先打草稿,无论是心中构思还是纸上绘制,都能帮助从整体上考虑程序实现。保持充足的休息,避免疲劳导致的低效和错误。积累专业开发资料,利用公司内部的沟通工具和共享库...
"word排版实例20套(提高篇)" 提供了一系列深入的实践案例,旨在帮助用户提升Word排版技能。这些实例涵盖了从基础到高级的各种应用,适合不同层次的使用者学习和参考。 首先,我们要理解Word排版的基本概念,包括...
焊接自动化是现代工业生产中提高效率、降低成本的重要手段。焊接自动化涉及多个方面,包括设备选择、耗材管理、工艺优化以及设备维护等。本篇内容将深入探讨焊接自动化如何通过这些方面来提升效率并节约成本。 首先...
本文主要探讨的是如何提高建筑起重机械安全...总的来说,这篇论文旨在通过系统的分析和科学的方法,提高建筑起重机械安全性能检验工作的效率,为行业提供更安全、更高效的工作模式,从而促进整个建筑行业的健康发展。
精益生产的核心理念——准时化(Just-In-Time,简称JIT)和自働化(自动化),是丰田生产方式的两大原则,它们致力于减少浪费,提高效率。通过细化管理的各个方面,包括投入管理、产出管理、流程管理、资源效率管理...