热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AvoidingfullTablescaninOracle

Ihaveaquerywhichfetchesthelast30rowsfromthewholetablewhichcontainsthousandsofentri

I have a query which fetches the last 30 rows from the whole table which contains thousands of entries.The table is large so database query is taking more than 5 minutes to execute. How can I avoid the full table scan on the table so that it scans only the last few rows. I am using Oracle 11g

我有一个查询从整个表中获取最后30行,其中包含数千个条目。表很大,因此数据库查询执行时间超过5分钟。如何避免对表进行全表扫描,以便仅扫描最后几行。我正在使用Oracle 11g

SELECT DD,MODEL,CNT,SYS
  FROM DVCE_TAB
  WHERE DD >= TO_DATE('2015-08-09','YYYY-MM-DD')
  AND DD <= TO_DATE('2015-09-08','YYYY-MM-DD')
  AND SYS IN ('00','01')

DD is the date and SYS is System type of device and MODEL is name of device DD and MODEL is the combined primary key for the Table TABLE contains thousands of entries and has data from 2010 I have to just fetch last months data

DD是日期,SYS是系统类型的设备,MODEL是设备DD的名称,MODEL是表的组合主键表包含数千个条目,并且有来自2010的数据我只需要获取上个月的数据

1 个解决方案

#1


1  

A few ideas come to mind:

想到一些想法:

1) Define an index on the DD and SYS columns:

1)在DD和SYS列上定义索引:

CREATE INDEX DVCE_TAB_1
  ON DVCE_TAB (DD, SYS);

You'll probably need to gather table statistics after adding indexes:

添加索引后,您可能需要收集表统计信息:

BEGIN
  DBMS_STATS.GATHER_TABLE_STATS(ownname => 'YOUR_SCHEMA_NAME',
                                tabname => 'DVCE_TAB');
END;

That may be all you need, but if needed you can always...

这可能就是您所需要的,但如果需要,您可以随时......

2) Partition DVCE_TAB on the DD column.

2)在DD列上划分DVCE_TAB。

CREATE TABLE DVCE_TAB
  (...column definitions...)
  PARTITION BY RANGE (DD) 
    INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
  PARTITION DVCE_TAB_P1 VALUES LESS THAN (TO_DATE('01-01-2000', 'DD-MM-YYYY'))); 

To do this you may need to actually create a new table with a different name, copy all the existing data from the 'old' DVCE_TAB to the 'new' DVCE_TAB, then drop the original table and rename the 'new' table to DVCE_TAB.

为此,您可能需要实际创建一个具有不同名称的新表,将所有现有数据从“旧”DVCE_TAB复制到“新”DVCE_TAB,然后删除原始表并将“新”表重命名为DVCE_TAB。

Best of luck.

祝你好运。


推荐阅读
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • scrapy 采集入为库 mysql 数据库,只更新一个字段 提示这个语法错误?
    就是查询有没有这个字,如果查到这个字就更新这个字的bsmc字段表是news_topic插入代码如下: ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
author-avatar
手机用户2502934025_218
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有