`
stop_
  • 浏览: 49630 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

oracle含日期比较的sql语句的优化

阅读更多

oracle的时间和日期比较功能比较强大,它提供了几个函数:比如to_char()和to_date()

但是如果在sql语句的时间比较中包含这两个函数,那么sql的效率会是非常的底下。

下面是三种时间比较的sql语句:

在sqlplus中

执行:

set timing on;

set autotrace traceonly;

分别执行以下三种语句:

 

一。SELECT "V_HEADQUARTER_HW_LIST"."ID",
       "V_HEADQUARTER_HW_LIST"."RQ_OPTION"
  FROM "V_HEADQUARTER_HW_LIST"
 WHERE (rq_option >= to_date('2007-09-01', 'yyyy.mm.dd') AND
       rq_option < to_date('2007-09-02', 'yyyy.mm.dd'))

结果如下:

172 rows selected.

 real: 250

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   TABLE ACCESS (BY INDEX ROWID) OF 'W_SHDJ_MX_ZD'
   2    1     INDEX (RANGE SCAN) OF 'W_SHDJ_MX_ZD_RQ_OPTION_D
          UNIQUE)

Statistics
----------------------------------------------------------
          7  recursive calls
          0  db block gets
       2870  consistent gets
          0  physical reads
          0  redo size
       6350  bytes sent via SQL*Net to client
       2076  bytes received via SQL*Net from client
         15  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
        172  rows processed

二。

SELECT "V_HEADQUARTER_HW_LIST"."ID",
       "V_HEADQUARTER_HW_LIST"."RQ_OPTION"
  FROM "V_HEADQUARTER_HW_LIST"
WHere
(to_char(rq_option, 'yyyy.mm.dd') = '2007.09.01')

结果如下:

172 rows selected.

 real: 19656

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   TABLE ACCESS (FULL) OF 'W_SHDJ_MX_ZD'
Statistics
----------------------------------------------------------
          7  recursive calls
          3  db block gets
     207025  consistent gets
     107946  physical reads
          0  redo size
       6350  bytes sent via SQL*Net to client
       2015  bytes received via SQL*Net from client
         15  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
        172  rows processed
三。

SELECT "V_HEADQUARTER_HW_LIST"."ID",
       "V_HEADQUARTER_HW_LIST"."RQ_OPTION"
  FROM "V_HEADQUARTER_HW_LIST"
where
trunc(rq_option, 'DD') = to_date('2007.09.01','yyyy.mm.dd')

172 rows selected.

 real: 20531

Execution Plan
---------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   TABLE ACCESS (FULL) OF 'W_SHDJ_MX_ZD'
Statistics
---------------------------------------------------
          7  recursive calls
          3  db block gets
     207022  consistent gets
     108024  physical reads
          0  redo size
       6350  bytes sent via SQL*Net to client
       2025  bytes received via SQL*Net from client
         15  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
        172  rows processed
可以看出,第一种的效率比另外两种高。

但是根据网上有人的测试,第三种的CPU占用比第二中少。

结论是:

涉及到时间的比较最好转化成可以使用索引,避免全表扫描。

分享到:
评论

相关推荐

    Oracle Sql语句转换成Mysql Sql语句

    本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...

    SQL优化 SQL优化软件 SQL优化工具

    3. **建议与改写**:自动提供优化建议,包括修改SQL语句结构、创建或调整索引、优化连接方式等,有时甚至可以直接改写SQL语句以提高性能。 4. **历史记录与报告**:记录SQL语句的执行历史,生成性能报告,便于跟踪...

    oracle 中SQL语句优化

    oracle中SQL语句优化

    ORACLEsql语句优化

    ORACLEsql语句优化,性能优化,语句技巧优化

    oracle 查看当前会话执行的sql语句

    ### Oracle 查看当前会话执行的SQL语句 在Oracle数据库管理中,有时我们需要了解某个特定会话(Session)正在执行哪些SQL语句。这在性能调优、问题诊断等场景下尤为重要。以下将详细介绍如何通过不同的方法来查看...

    基于Oracle数据库的SQL语句优化

    ### 基于Oracle数据库的SQL语句优化 #### 引言 Oracle数据库是由甲骨文公司开发的一款关系型数据库管理系统,在当前的数据库市场中占据着重要的地位。它广泛应用于商业、政府等领域,具备强大的数据处理能力和高效...

    Oracle数据库设计中SQL语句优化研究.doc

    ### Oracle数据库设计中SQL语句优化研究 #### 引言 随着信息技术的快速发展,数据库作为信息系统的核心组件之一,在各类业务场景中的应用越来越广泛。Oracle数据库因其高性能、高可靠性等特点成为了许多企业的首选...

    oracle监听执行sql语句

    在Oracle数据库管理与维护过程中,有时候我们需要了解应用程序正在执行哪些SQL语句,这不仅有助于性能优化,还可以帮助我们诊断潜在的问题。通过监听执行SQL语句的方式,我们可以获取到当前会话正在执行的具体SQL...

    ORACLE数据库优化之SQL语句的并行处理.pdf

    ### ORACLE数据库优化之SQL语句的并行处理 #### SQL语句并行处理的重要性与优势 在现代信息系统的高效运作中,数据库的性能优化至关重要,尤其是面对大规模数据集时。Oracle数据库作为企业级数据库解决方案的佼佼...

    ORACLE数据库SQL语句编写优化总结.rar

    2. **SQL语句优化技巧**: - **选择适当的WHERE子句**:使用索引来提高查询速度,避免全表扫描。 - **使用绑定变量**:避免SQL注入,提高执行计划的重用率。 - **减少数据访问**:精确选择需要的列,避免SELECT *...

    Oracle数据库sql语句 跟踪器

    在Oracle环境中,理解SQL语句的行为是优化数据库性能的关键。SQL Monitor提供实时视图,帮助DBA(数据库管理员)和开发人员识别性能瓶颈,改善查询效率,并确保系统的稳定运行。 SQL Monitor通过收集和展示SQL语句...

    压测Oracle的SQL语句的性能情况

    本文将深入探讨如何利用压力测试工具来评估和优化Oracle数据库中的SQL语句性能。 标题"压测Oracle的SQL语句的性能情况"暗示了我们关注的是在高负载情况下,Oracle数据库处理SQL查询的能力。压力测试(Pressure ...

    Oracle数据库的SQL语句的优化

    ### Oracle数据库的SQL语句优化详解 #### 一、Oracle的Optimizer及其相关知识 Oracle数据库在执行SQL语句前,会先分析语句的执行计划,这一过程由**优化器**(Optimizer)完成。优化器根据不同的情况为每条SQL语句...

    Oracle SQL语句性能优化

    Oracle SQL语句性能优化是数据库管理中的关键环节,直接影响到系统的响应速度和资源利用效率。本文将详细探讨优化Oracle SQL语句的几个核心策略。 1. 选择合适的优化器 Oracle 提供了三种优化器:RULE(基于规则)...

    Oracle sql语句优化规则汇总

    ### Oracle SQL语句优化规则详解 #### 一、选择正确的优化器 在Oracle数据库中,SQL语句的执行效率很大程度上取决于所选的优化器。Oracle提供了三种优化器模式: 1. **基于规则的优化器(RULE)**:这是Oracle...

    oracle性能优化之SQL语句

    描述对sql语句的优化达到优化oracle的目的

Global site tag (gtag.js) - Google Analytics