`
zzg
  • 浏览: 124487 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Oracle 索引使用(小技巧)

阅读更多

当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万倍。
分享到:
评论
2 楼 Virgo_S 2009-03-16  
ln是什么东西呀
1 楼 zyf0808 2009-03-06  
够乱乎的,整理一下再发吧

相关推荐

    Oracle数据库中索引的维护

    Oracle数据库中的索引维护是数据库管理员日常工作中至关重要的一部分,尤其是在大型企业级...在Oracle数据库中,索引维护是确保数据库性能稳定和高效运行的重要环节,对数据库管理员来说,理解和掌握这些技巧至关重要。

    ORACLE数据库维护技巧

    为了更好地诊断并解决这些问题,本文将分享一系列关于Oracle数据库维护的小技巧,特别是针对Unix环境下的维护实践。 #### 二、操作系统层面的监控与调优 ##### 1. 检查操作系统IO问题 - **工具选择**:`sar`是一个...

    《Oracle查询优化改写技巧与案例》PDF版本下载.txt

    根据提供的文件信息,本文将对《Oracle查询优化改写技巧与案例》这一主题进行详细的解析,涵盖Oracle查询优化的基本概念、重要性、改写技巧及其实际应用案例。 ### 一、Oracle查询优化概述 #### 1.1 查询优化定义 ...

    Oracle强制索引

    - 当表较小且全表扫描比索引扫描更快时使用。 - 示例:`SELECT /*+FULL(A)*/ EMP_NO, EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT';` - **解释**:此查询将对表`A`进行全表扫描,即使存在索引也忽略不使用。 ##...

    Oracle索引

    Oracle数据库的索引简介、创建和使用小技巧

    ORACLE索引与高性能SQL介绍

    通过深入理解Oracle索引和高性能SQL的概念、类型、创建与维护方法以及优化原则和技巧,数据库管理员和开发人员可以更有效地设计和管理数据库,提高系统的整体性能。这不仅涉及到理论知识的学习,更需要在实践中不断...

    利用Oracle索引提高“军卫一号”的运行性能.pdf

    本文将深入探讨Oracle索引的工作原理、设置技巧以及如何根据实际情况选择合适的索引策略。 1. **索引的作用与类型** 索引是数据库为了加速查询而创建的数据结构,它可以提供快速访问数据的方法,避免全表扫描。...

    Oracle查询优化改写 技巧与案例

    Oracle查询优化改写技巧与案例涉及到如何通过改进SQL语句、利用索引、调整表设计和数据库参数来提升查询速度,降低资源消耗。以下将详细介绍一些核心的Oracle查询优化策略和实践案例。 1. **SQL语句优化** - **...

    OracleSQL性能优化技巧

    同时,检查和优化索引的使用是提升查询速度的关键,包括合理利用索引避免全表扫描,以及避免索引失效的情况,如数据类型隐形转换、列上的数学运算、不等于运算、substr函数、'%'通配符的不当使用以及字符串连接。...

    ORACLE进阶操作技巧

    ### ORACLE进阶操作技巧知识点详解 #### 一、数据库安装与配置 ##### 安装注意事项 - **根据用户数量进行特定安装**:在安装Oracle数据库之前,首先需要考虑的是预期用户数量。不同规模的应用场景可能需要不同版本...

    Oracle性能优化技巧

    ### Oracle性能优化技巧详解 #### 一、引言 Oracle数据库是企业级应用中的核心组件之一,其性能直接影响到业务系统的稳定性和响应速度。本文将详细介绍Oracle性能优化的关键技巧,帮助用户更好地理解和掌握如何...

    oracle数据库索引与sql的优化

    - 对于小于5MB的小表,可能不适合建立索引。 #### 二、索引的选择与使用原则 1. **索引选择原则:** - 当查询涉及的数据行小于表数据总量的5%时,使用索引查询效果较好。 - 如果WHERE子句中涉及到的列是经常...

    oracle+11G完全中文教程(附加数据库小技巧文档哦)

    总的来说,Oracle 11g完全中文教程结合数据库小技巧文档,将引导学习者从基础到进阶,全面掌握Oracle数据库的使用和管理,为实际工作中的问题解决提供有力支持。通过深入学习和实践,任何人都能成为熟练的Oracle DBA...

    ORACLE_SQL性能优化技巧

    Oracle SQL性能优化是数据库管理中的关键环节...通过理解和应用这些技巧,数据库管理员和开发人员可以有效地优化ORACLE SQL查询,提升系统整体性能。记住,每个数据库环境都有其独特性,最佳实践需要根据实际情况调整。

    Oracle索引检查重建与碎片收集[文].pdf

    当你发现表空间的利用率低,或者有很多小的空闲块时,可以使用此命令。例如: ```sql ALTER TABLESPACE 表空间名 COALESCE; ``` 执行此命令后,Oracle会尝试合并表空间内的空闲块,但请注意,这不会影响到索引本身...

    Oracle查询优化改写技巧与案例

    总结,Oracle查询优化需要综合考虑索引使用、连接方式、数据处理策略等多个方面。通过理解查询执行机制,结合实际场景,我们能有效地改写SQL,提高数据库性能。持续学习和实践,是成为优秀Oracle DBA的关键。

    Oracle优化日记:一个金牌DBA的故事 白鳝.扫描版

    南京的死锁问题今日点评优化小技巧 Oracle的死锁优化小技巧 几个常用的与锁相关的脚本5月20日 凌晨的邮件通知短信今日点评优化小技巧 /10028事件优化小技巧 PL/SQL 优化工具profiler5月22日 ODS系统和RAC优化小技巧 ...

    ORACLE存储过程性能优化技巧

    #### 五、索引的使用技巧 - **索引选择性**:索引的选择性是指索引列中不同值的数量与表中记录数的比例。索引选择性越高,索引的效率也越高。使用CBO时,应该避免使用选择性差的索引。 - **强制使用索引**:在SQL...

    oracle性能优化技巧

    ### Oracle性能优化技巧详解 #### 一、Oracle优化器模式 在Oracle数据库中,优化器是决定查询执行计划的关键组件,其目标是最小化资源消耗并最大化查询性能。Oracle提供了三种主要的优化器模式:基于规则(RULE)...

    Oracle数据库基于索引SQL优化方法的研究与实现

    综上所述,通过对Oracle数据库索引特点的深入理解和合理利用,结合具体的SQL语句优化技巧,可以有效提高数据库的性能。在实际工作中,还需要不断地学习和积累经验,以便更加灵活地应对各种复杂的查询需求。

Global site tag (gtag.js) - Google Analytics