【发布时间】:2015-12-04 11:02:58
【问题描述】:
我有一个查询,它从包含数千个条目的整个表中获取最后 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 是日期,SYS 是设备的系统类型,MODEL 是设备的名称 DD 和 MODEL 是表的组合主键 TABLE 包含数千个条目,并包含 2010 年的数据 我只需要获取上个月的数据
【问题讨论】:
-
你的 SQL 查询是什么?
-
从表中选择 DD、COL2、COL3,其中 DD >= '2015-08-09' AND
-
请编辑您的问题并在
DVCE_TAB中包含列的定义,以及在DVCE_TAB中定义的任何索引。谢谢。 -
数百万行在设计良好的数据库中不是问题。在表中添加索引,包括索引中的列 DD 和 SYS
-
@PavelGatnar - 他现在已经解决了。