`
lirig
  • 浏览: 237471 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

一些简单的oracle查询优化

阅读更多

一些简单的oracle查询优化

 

  • 使用where过滤行
    如果查询数据时禁止用程序过滤数据,尽量在sql中过滤数据。例如 查询性别为男的用户记录,一定要在where条件中过滤记录不能通过查询所有结果后在程序里面过滤
  • 使用表连接而不是多个查询
    在涉及到查询多个时,尽量使用表之间的连接进行查询,不要单独进行查询,然后再通过程序把结果集合起来。
  • 执行连接时使用完全限定的列引用
    在查询中包含表的别名,并为查询所引用的每列制定合适的别名,这样查询就不需要去查询表的列。
  • 使用CASE表达式而不是多个查询
    当要对一个表的相同自行许多计算时,使用CASE表达式而不是用多个查询
    Select 
    Cont(case when price <13 then 1 else null end )  low,
    Cont(case when price  between    13 and 15  then 1 else null end ) med,
    Cont(case when price >13 then 1 else null end ) high
     from table
  • 增加表索引
    1.要对指定的查询条件创建索引,但是在查询中用到 like '%name%' 是不走索引的尽量采用 like '%name' or like 'name%' 。
    2.创建函数索引
    如果查询条件为通过函数查询 例如 where name =Upper('AaBbCcDd')  ,这样要创建Upper(name)索引
    3.内容经常重复的字段不能建索引,例如性别之类的字段,里面的数据重复几率太大,不用创建索引。
  • 使用WHERE而不用HAVING
    Where用于过滤行,having用于过滤组,因为行被分组后,having才能过滤组,所以尽量用where过滤
  • 使用exists而不用IN
     因为Exists只检查行的存在,而in检查实际值。
  • 使用相同的SQL
    如果执行相同,oracle会使用缓存里面的数据,使用的SQL 必须绝对相同
    所有字符必须相同
    大小写要相同
    空格要相同

上面为一些简单的oracle SQL 注意地方。其实oracle优化还有很多,例如怎么去创建表空间,表空间怎么发布,怎么去创建索引,索引处理,怎么应用oracle的缓存,还有oracle独有的基于成本的优化等。这里面就大有学问了,希望大家一起交流。

 

2
0
分享到:
评论
3 楼 dingjun1 2010-04-01  
lirig 写道


都走索引,不过查询的结果和like '%name%'不一样


我做了个实验,

create index t_ryzhxm on t_zzjg_ryzh(c_xm);
1、select * from t_zzjg_ryzh where c_xm like '吴%'
是会对索引进行范围扫描

2、select * from t_zzjg_ryzh where c_xm like '吴%' or c_xm like '%吴'
是全表扫描

3、select * from t_zzjg_ryzh where  c_xm like '%吴'
也是全表扫描(估计建一个反序索引,应该能范围扫描)
=======================================================
还是说我建索引的方式和你说的不一样?
2 楼 lirig 2010-04-01  
dingjun1 写道
1、使用CASE表达式而不是多个查询
这种用法对我个人来说很新颖,记下了。


like '%name%' 和like '%name' or like 'name%'有点疑问

like '%name%'是全表扫描,
但是ike '%name' or like 'name%'应该只有其中一个能走索引,另一个还是会全表扫描吧。
不会又创建一个反序索引又创建一正向的索引吧。


都走索引,不过查询的结果和like '%name%'不一样
1 楼 dingjun1 2010-04-01  
1、使用CASE表达式而不是多个查询
这种用法对我个人来说很新颖,记下了。


like '%name%' 和like '%name' or like 'name%'有点疑问

like '%name%'是全表扫描,
但是ike '%name' or like 'name%'应该只有其中一个能走索引,另一个还是会全表扫描吧。
不会又创建一个反序索引又创建一正向的索引吧。

相关推荐

    Oracle 查询优化,个人练习

    Oracle查询优化是数据库管理中的关键...以上是Oracle查询优化的一些核心要点,实践中还需要根据具体情况进行深入分析和测试,不断优化查询,以实现数据库的最佳性能。不断学习和实践是成为Oracle查询优化大师的关键。

    Oracle查询优化改写技巧与案例 有教无类落落

    《Oracle查询优化改写技巧与案例》看点: # 字典式写作手法:不讲具体语法,没有简单知识堆砌,直接以案例形式讲技巧与案例 # 大量优化实战方法:将主要SQL优化点一一剖析,分享大量SQL优化的实际工作经验 # 50余...

    Oracle查询优化技术在电信业务报表系统中的应用

    ### Oracle查询优化技术在电信业务报表系统中的应用 #### 引言 电信业务报表系统作为本地电话业务计算机综合管理系统的一部分,扮演着至关重要的角色。它不仅支持市话业务的受理和流程控制,还为经营管理及决策...

    oracle并行查询优化

    ### Oracle并行查询优化 #### 一、引言 在Oracle数据库系统中,并行查询(Parallel Query, PQ)是一项强大的特性,它通过将查询任务分解为多个子任务并行执行来提升性能。然而,并行查询并非总是能带来性能提升,...

    Oracle性能优化技巧

    在进行Oracle性能优化之前,首先需要了解Oracle查询优化器(Query Optimizer)的工作原理及其配置选项。Oracle提供了多种优化模式,主要包括以下几种: 1. **RULE**:基于规则的优化模式。这是Oracle最早的优化方式...

    oracle性能优化技巧

    在Oracle数据库中,优化器是决定查询执行计划的关键组件,其目标是最小化资源消耗并最大化查询性能。Oracle提供了三种主要的优化器模式:基于规则(RULE)、基于成本(COST)以及选择性(CHOOSE)。 1. **基于规则...

    OracleSQL的优化.pdf

    例如,在检索月薪大于 2000 的表达式中,如果 SQL 语句包括第一种情况,优化器会简单地把它转变成第二种。优化器不会简化跨越比较符的表达式,因此我们应该尽量写用常量跟字段比较检索的表达式,而不要将字段置于...

    oracle查询语句优化

    本文将围绕Oracle查询优化的29个小技巧进行深入探讨。 首先,选择合适的Oracle优化器至关重要。Oracle提供了三种优化器:基于规则(RULE)、基于成本(COST)和选择性(CHOOSE)。基于成本的优化器(CBO)是最常见...

    oracle SQL优化技巧

    Oracle SQL 优化技巧 Oracle SQL 优化是提高数据库性能的关键技巧之一。以下是 Oracle SQL 优化的 12 个技巧: 1. 选择最有效率的表名顺序 在基于规则的优化器中,Oracle 的解析器按照从右到左的顺序处理 FROM ...

    Oracle 查询优化

    ### Oracle查询优化:深入解析与应用 #### 执行概览 本文档旨在全面解析Oracle查询优化器的关键功能,这是数据库性能提升的核心要素。Oracle查询优化技术在功能的广度上无可匹敌,以下将深入探讨所有主要的查询...

    Oracle SQL优化实例讲解.pdf

    1. Oracle查询优化改写技巧与案例 Oracle数据库是一个功能强大且广泛使用的数据库系统,其中SQL查询优化是一个核心主题。在进行查询优化时,一个重要的方法是改写查询语句,以使得数据库执行计划更高效。改写技巧...

    Oracle语句优化53个规则详解

    ### Oracle语句优化53个规则详解 #### 一、选用适合的Oracle优化器 在Oracle数据库中,优化器的选择对于SQL语句的执行效率至关重要。Oracle提供了三种优化器模式: 1. **基于规则的优化器(RULE)**:这是一种较...

    oracle9i的查询优化

    ### Oracle9i的查询优化深度解析 #### 引言 Oracle9i的查询优化是数据库管理系统中的关键组件,它能够显著提升SQL查询的执行效率,从而优化整个数据库系统的性能。查询优化器通过智能分析和调整SQL语句的执行计划...

    Oracle 性能优化之 SQL优化

    - 使用星号(*)代替具体列名会导致Oracle查询数据字典以获取所有列名,从而增加了查询的时间。因此,最好明确列出所需的列。 4. **减少访问数据库的次数** - 每次访问数据库都会产生一定的开销。可以通过合并多...

    Oracle性能优化培训

    在Oracle性能优化过程中,主要涉及以下几个方面:磁盘I/O优化、内存优化、CPU优化以及查询优化等。通过这些方面的综合调整与优化,可以显著提升Oracle数据库的运行效率。 #### 二、索引优化 索引是提高查询速度的...

    简单oracle性能优化

    ### 知识点:Oracle 性能优化方法 在数据库管理与维护中,Oracle数据库的性能优化是一项重要的工作。本文将根据给定的信息,详细介绍如何通过调整Oracle内存配置(包括PGA、SGA及其子组件)来提升Oracle服务器的...

    Oracle的优化器(Optimizer)

    ### Oracle的优化器(Optimizer)详解 #### 一、Oracle优化器概述 在Oracle数据库中,每当执行SQL语句时,系统首先需要确定最佳的执行路径或计划,这一过程由**优化器(Optimizer)**负责。优化器的主要任务是评估SQL...

    超酷30个Oracle语句优化规则详解

    在Oracle数据库中,优化器的选择对于查询性能至关重要。Oracle提供了三种优化器模式来帮助用户根据实际情况选择最合适的执行计划: 1. **基于规则的优化器(RULE)**:这是最早的优化器模式,其决策主要依赖于硬...

    Oracle优化原则整理

    在Oracle SQL优化方面,有多种策略和原则可以提升查询效率,降低资源消耗,以下是一些核心的Oracle优化原则和方法: 1. **索引优化**:索引是提升查询速度的关键。合理创建和使用索引能显著提高数据检索的速度。B树...

Global site tag (gtag.js) - Google Analytics