当WHERE条件中的字段是类似column1 is null 或者column1 is not null是,即便column1上面本来有索引也不会用到
比如where column1 =‘aaa’ 是可以用到索引的
下面的情况都用不到索引
column1||column2=‘aaabbb’
Substr(column1,1)=‘aaa’
Column1||’b’ =‘aaab’
Column3 + 1 > :a
Like 的字符串中第一个字符如果是‘%’则用不到索引
Column1 like ‘aaa%’ 是可以的
Column1 like ‘%aaa%’用不到
<>也用不到索引
有时可以采取适当措施改写后可以用到索引
例:column1 有3个值(‘A’,’B’,’C’),三个值的分布为‘A’ 10%, ‘B’ 80%,’C’ 10%,则column1 <> ‘B’ 可以改写为column1 in(‘A’,’C’)
尽管In写法要比exists简单一些,exists一般来说性能要比In要高的多
用In还是用Exists的时机
当in的集合比较小的时候,或者用Exists无法用到选择性高的索引的时候,用In要好,否则就要用Exists
例:select count(*) from person_info where xb in (select xb_id from dic_sex);
Select count(*) from n_acntbasic a where shbxdjm =:a and exists(select 1 from person_info where pid=a.pid and …);
Select * from person_info where zjhm=3101….;将会对person_info全表扫描
Select * from person_info where zjhm =‘3101…’才能用到索引
假定TEST表的dt字段是date类型的并且对dt建了索引。
如果要查‘20041010’一天的数据.下面的方法用不到索引
Select * from test where to_char(dt,’yyyymmdd’) =‘20041010’;
而select * from test where dt >=to_date(‘20041010’,’yyyymmdd’) and dt < to_date(‘20041010’,’yyyymmdd’) + 1 将会用到索引。
如果能不用到排序,则尽量避免排序。
用到排序的情况有
集合操作。Union ,minus ,intersect等,注:union all 是不排序的。
Order by
Group by
Distinct
In 有时候也会用到排序
确实要排序的时候也尽量要排序小数据量
,尽量让排序在内存中执行,有文章说,内存排序的速度是硬盘排序的1万倍。
分享到:
相关推荐
根据提供的文件信息,本文将对《Oracle查询优化改写技巧与案例》这一主题进行详细的解析,涵盖Oracle查询优化的基本概念、重要性、改写技巧及其实际应用案例。 ### 一、Oracle查询优化概述 #### 1.1 查询优化定义 ...
Oracle数据库中的索引维护是数据库管理员日常工作中至关重要的一部分,尤其是在大型企业级...在Oracle数据库中,索引维护是确保数据库性能稳定和高效运行的重要环节,对数据库管理员来说,理解和掌握这些技巧至关重要。
为了更好地诊断并解决这些问题,本文将分享一系列关于Oracle数据库维护的小技巧,特别是针对Unix环境下的维护实践。 #### 二、操作系统层面的监控与调优 ##### 1. 检查操作系统IO问题 - **工具选择**:`sar`是一个...
- 当表较小且全表扫描比索引扫描更快时使用。 - 示例:`SELECT /*+FULL(A)*/ EMP_NO, EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT';` - **解释**:此查询将对表`A`进行全表扫描,即使存在索引也忽略不使用。 ##...
Oracle数据库的索引简介、创建和使用小技巧
通过深入理解Oracle索引和高性能SQL的概念、类型、创建与维护方法以及优化原则和技巧,数据库管理员和开发人员可以更有效地设计和管理数据库,提高系统的整体性能。这不仅涉及到理论知识的学习,更需要在实践中不断...
本文将深入探讨Oracle索引的工作原理、设置技巧以及如何根据实际情况选择合适的索引策略。 1. **索引的作用与类型** 索引是数据库为了加速查询而创建的数据结构,它可以提供快速访问数据的方法,避免全表扫描。...
Oracle查询优化改写技巧与案例涉及到如何通过改进SQL语句、利用索引、调整表设计和数据库参数来提升查询速度,降低资源消耗。以下将详细介绍一些核心的Oracle查询优化策略和实践案例。 1. **SQL语句优化** - **...
同时,检查和优化索引的使用是提升查询速度的关键,包括合理利用索引避免全表扫描,以及避免索引失效的情况,如数据类型隐形转换、列上的数学运算、不等于运算、substr函数、'%'通配符的不当使用以及字符串连接。...
### ORACLE进阶操作技巧知识点详解 #### 一、数据库安装与配置 ##### 安装注意事项 - **根据用户数量进行特定安装**:在安装Oracle数据库之前,首先需要考虑的是预期用户数量。不同规模的应用场景可能需要不同版本...
### Oracle性能优化技巧详解 #### 一、引言 Oracle数据库是企业级应用中的核心组件之一,其性能直接影响到业务系统的稳定性和响应速度。本文将详细介绍Oracle性能优化的关键技巧,帮助用户更好地理解和掌握如何...
- 对于小于5MB的小表,可能不适合建立索引。 #### 二、索引的选择与使用原则 1. **索引选择原则:** - 当查询涉及的数据行小于表数据总量的5%时,使用索引查询效果较好。 - 如果WHERE子句中涉及到的列是经常...
总的来说,Oracle 11g完全中文教程结合数据库小技巧文档,将引导学习者从基础到进阶,全面掌握Oracle数据库的使用和管理,为实际工作中的问题解决提供有力支持。通过深入学习和实践,任何人都能成为熟练的Oracle DBA...
Oracle SQL性能优化是数据库管理中的关键环节...通过理解和应用这些技巧,数据库管理员和开发人员可以有效地优化ORACLE SQL查询,提升系统整体性能。记住,每个数据库环境都有其独特性,最佳实践需要根据实际情况调整。
当你发现表空间的利用率低,或者有很多小的空闲块时,可以使用此命令。例如: ```sql ALTER TABLESPACE 表空间名 COALESCE; ``` 执行此命令后,Oracle会尝试合并表空间内的空闲块,但请注意,这不会影响到索引本身...
总结,Oracle查询优化需要综合考虑索引使用、连接方式、数据处理策略等多个方面。通过理解查询执行机制,结合实际场景,我们能有效地改写SQL,提高数据库性能。持续学习和实践,是成为优秀Oracle DBA的关键。
南京的死锁问题今日点评优化小技巧 Oracle的死锁优化小技巧 几个常用的与锁相关的脚本5月20日 凌晨的邮件通知短信今日点评优化小技巧 /10028事件优化小技巧 PL/SQL 优化工具profiler5月22日 ODS系统和RAC优化小技巧 ...
#### 五、索引的使用技巧 - **索引选择性**:索引的选择性是指索引列中不同值的数量与表中记录数的比例。索引选择性越高,索引的效率也越高。使用CBO时,应该避免使用选择性差的索引。 - **强制使用索引**:在SQL...
### Oracle性能优化技巧详解 #### 一、Oracle优化器模式 在Oracle数据库中,优化器是决定查询执行计划的关键组件,其目标是最小化资源消耗并最大化查询性能。Oracle提供了三种主要的优化器模式:基于规则(RULE)...
综上所述,通过对Oracle数据库索引特点的深入理解和合理利用,结合具体的SQL语句优化技巧,可以有效提高数据库的性能。在实际工作中,还需要不断地学习和积累经验,以便更加灵活地应对各种复杂的查询需求。