`

Oracle_查询当天记录 三种方法效率比较

 
阅读更多

oracle 查询当天记录 三种方法效率比较

 

via: http://my.oschina.net/baishi/blog/293742

 

-- 查询一表中当天生成的数据

-- 原表mobilefrends中的cdate字段上有索引,创建索引语句是:create index mobilefrends_cdate_idx on mobilefrends(cdate);

  

---------------------------------------------------------------------------------------------------------------------

-- 方法一:用to_char()函数

  

hll@SZTYORA> select count(*) from mobilefrends where to_char(cdate,'yyyy-mm-dd')=to_char(sysdate,'yyyy-mm-dd');

  

  COUNT(*)

----------

     82119

  

已用时间:  00: 00: 17.18

  

执行计划

----------------------------------------------------------

Plan hash value: 3731074549

  

------------------------------------------------------------------------------------------------

| Id  | Operation             | Name                   | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT      |                        |     1 |     8 | 11773  (16)| 00:02:22 |

|   1 |  SORT AGGREGATE       |                        |     1 |     8 |            |          |

|*  2 |   INDEX FAST FULL SCAN| MOBILEFRENDS_CDATE_IDX |   129K|  1012K| 11773  (16)| 00:02:22 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - filter(TO_CHAR(INTERNAL_FUNCTION("CDATE"),'yyyy-mm-dd')=TO_CHAR(SYSDATE@!-1,'yyyy

              -mm-dd'))

  

  

统计信息

----------------------------------------------------------

          1  recursive calls

          0  db block gets

      36896  consistent gets

          0  physical reads

          0  redo size

        345  bytes sent via SQL*Net to client

        338  bytes received via SQL*Net from client

          2  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

          1  rows processed

  

---------------------------------------------------------------------------------------------------------------------

-- 方法二:用trunc()函数

  

hll@SZTYORA> select count(*) from mobilefrends where trunc(cdate)=trunc(sysdate);

  

  COUNT(*)

----------

     82119

  

已用时间:  00: 00: 16.32

  

执行计划

----------------------------------------------------------

Plan hash value: 3731074549

  

------------------------------------------------------------------------------------------------

| Id  | Operation             | Name                   | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT      |                        |     1 |     8 | 12580  (22)| 00:02:31 |

|   1 |  SORT AGGREGATE       |                        |     1 |     8 |            |          |

|*  2 |   INDEX FAST FULL SCAN| MOBILEFRENDS_CDATE_IDX |   129K|  1012K| 12580  (22)| 00:02:31 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - filter(TRUNC(INTERNAL_FUNCTION("CDATE"))=TRUNC(SYSDATE@!-1))

  

  

统计信息

----------------------------------------------------------

          0  recursive calls

          0  db block gets

      36896  consistent gets

          0  physical reads

          0  redo size

        345  bytes sent via SQL*Net to client

        338  bytes received via SQL*Net from client

          2  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

          1  rows processed

  

---------------------------------------------------------------------------------------------------------------------

-- 方法三:不用函数

hll@SZTYORA> select count(*) from mobilefrends where cdate>=trunc(sysdate) and cdate<trunc(sysdate)+1;

  

  COUNT(*)

----------

     82119

  

已用时间:  00: 00: 00.43

  

执行计划

----------------------------------------------------------

Plan hash value: 2668176725

  

---------------------------------------------------------------------------------------------

| Id  | Operation          | Name                   | Rows  | Bytes | Cost (%CPU)| Time     |

---------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT   |                        |     1 |     8 |     3   (0)| 00:00:01 |

|   1 |  SORT AGGREGATE    |                        |     1 |     8 |            |          |

|*  2 |   FILTER           |                        |       |       |            |          |

|*  3 |    INDEX RANGE SCAN| MOBILEFRENDS_CDATE_IDX |    48 |   384 |     3   (0)| 00:00:01 |

---------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - filter(TRUNC(SYSDATE@!-1)<TRUNC(SYSDATE@!))

   3 - access("CDATE">=TRUNC(SYSDATE@!-1) AND "CDATE"<TRUNC(SYSDATE@!))

  

  

统计信息

----------------------------------------------------------

          0  recursive calls

          0  db block gets

        221  consistent gets

          0  physical reads

          0  redo size

        345  bytes sent via SQL*Net to client

        338  bytes received via SQL*Net from client

          2  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

          1  rows processed

  

---------------------------------------------------------------------------------------------------------------------

  

  

-- 由上三种方法可见:

-- 方法一:用to_char()函数,耗时17.18秒,逻辑读为36896次,执行的是全索引扫描;

-- 方法二:用trunc()函数,耗时16.32秒,逻辑读也是36896次,执行的也是全索引扫描;

-- 方法三:不用函数,耗时0.43秒,逻辑读为221次,执行的是索引范围扫描;

分享到:
评论

相关推荐

    ORACLE_维护手册

    【Oracle维护手册】是指导ORACLE...日志查询后,建议将当天的日志移动到特定目录,便于日后查阅。 通过遵循上述维护步骤和问题处理策略,Oracle数据库管理员能够有效地管理和维护数据库,确保业务连续性和数据安全性。

    ORACLE库存快照创建和查询工具

    为了有效地跟踪和追溯商品库存,"ORACLE库存快照创建和查询工具" 提供了一个高效的方法。这个工具利用Oracle的存储过程功能,每天凌晨0点自动创建库存的快照,确保了库存数据的实时性和历史可追溯性。 首先,我们要...

    ORACLE ERP 11i表结构字段中文名称

    ### ORACLE ERP 11i表结构字段中文名称解析 #### BOM 模块常用表结构 ##### 1. **bom_bill_of_materials** **表名**: bom.bom_bill_of_materials **说明**: BOM 清单父项目表 **主要字段**: - **BILL_SEQUENCE...

    ORACLE日常维护实例

    Oracle数据库是企业级的重要数据存储系统,而作为Oracle DBA(数据库管理员),日常维护工作是确保数据库高效、稳定运行的关键。以下是对Oracle日常维护实例的详细说明: 首先,DBA每天需要对Oracle数据库的运行...

    Oracle 慢SQL监控测试及脚本实现

    在Oracle数据库环境中,慢SQL查询是影响系统性能的关键因素,因此对其进行监控和分析至关重要。本文将详细介绍如何在Oracle中进行慢SQL监控,并提供一个实际的脚本来实现这一过程。 首先,我们通过数据准备来模拟一...

    Oracle的订单管理系统文档

    ### Oracle订单管理系统的知识点概述 #### 一、订单管理概览 (Order Management Overview) - **功能定位**: Oracle 订单管理系统提供了全面的工具来管理和控制企业的销售订单操作。 - **核心功能**: 包括订单组织...

    oracle数据库自动备份压缩

    本文将详细介绍一种实现Oracle数据库自动备份和压缩的方法,以解决因备份文件占用过多空间而导致的问题。 #### 二、准备工作 为了实现Oracle数据库的自动备份与压缩,我们需要准备以下几项: 1. **备份环境搭建**...

    Oracle数据库备份方案

    ### Oracle数据库备份方案详解 #### 一、概要 数据安全是任何系统设计与运维中的核心要素之一。在日常工作中,不仅要确保数据库的稳定运行,还需要采取有效措施防止数据丢失或损坏。对于突发情况,良好的数据库...

    Oracle查询最近几天每小时归档日志产生数量的脚本写法

    在Oracle数据库管理中,日志记录是至关重要的,特别是对于归档日志,它们记录了数据库的所有更改,确保数据安全性和可恢复性。查询每小时归档日志产生数量可以帮助DBA(数据库管理员)监控数据库活动,分析系统性能,...

    基于Oracle的短信平台的实现及应用.pdf

    此外,还设计了一个名为SM_RECEIVE_T的表来存储当天接收到的短信,而SM_RECEIVE_T_LOG用于归档历史接收记录。 【优势与意义】 建立统一的短信平台有以下几点好处:首先,资源得到有效整合,避免了重复建设和投入;...

    浅谈Oracle数据库备份与恢复策略.pdf

    Oracle数据库的备份模式主要有三种:全备份、差异增量备份和累计增量备份。全备份针对所有数据进行备份,适合系统上线和长时间未备份后使用;差异增量备份备份上次备份后更新的数据,适合当日备份;累计增量备份则...

    ORACLE日常维护实例[归类].pdf

    - 每周对数据库进行健康检查,包括检查数据库对象的增长情况,分析性能瓶颈,优化SQL查询,以及评估索引的效率。 - 对数据库对象的状态进行检查,确保表、索引、视图等没有损坏或异常。 7. **备份与恢复策略**: ...

    OracleASCP操作手册.pptx

    Oracle ASCP(Advanced Supply Chain Planning)是Oracle公司提供的一个高级供应链计划工具,它帮助企业进行复杂的库存管理和生产计划。本操作手册主要围绕Oracle ASCP在备份、恢复和日常操作中的实践展开,尤其关注...

    图书管理系统

    - **当日注销图书查询**:具备查询及恢复功能,减少错误发生。 ##### 2. 业务管理 - **图书借阅与归还**:集成合法性验证、信息动态生成及超期罚款计算,简化操作流程。 - **人员档案管理**:全面记录读者与员工...

    ddd.rar_医院 排队_排队

    这需要掌握数据库管理系统,如MySQL或Oracle,以及SQL查询语言。数据安全性和备份恢复策略也是关键。 6. **用户体验**:良好的用户界面设计,包括清晰的指示、简洁的操作流程,是提升满意度的重要因素。前端开发...

    通过sql准确查出一天数据的方法

    在Oracle数据库中,一天通常被定义为从当天的凌晨00:00:00开始,到次日00:00:00之前,不包括次日的凌晨。因此,如果你想要查询2014年10月1日的数据,你需要包含所有在2014年10月1日00:00:00至2014年10月2日00:00:00...

    毕业论文_医院信息系统

    - **专家当天排班表库**:显示当天所有专家的排班情况。 - **科室处方月报表库**:统计每月各科室开出的处方数量。 #### 六、程序各模块的实现技术 ##### 6.2 各模块实现的主要相关技术 - **用户登录**:采用...

    SQL动态日期列生成并统计

    "知识点:SQL根据一个日期,返回1号至当日所有日期.sql"这个文件名暗示了一个更具体的应用,即生成从指定日期开始到当天的所有日期。 为了实现这个功能,我们可以先获取当前日期,然后用上述方法生成从指定日期到...

Global site tag (gtag.js) - Google Analytics