【发布时间】:2012-02-25 05:46:07
【问题描述】:
我有以下查询,它在执行后从 100000000 返回 20000 条记录..
SELECT *
FROM (SELECT a.*, ROWNUM rnum
FROM (select TIME,url,bytes
FROM (SELECT TO_CHAR ("5mintime",'YYYY-MM-DD HH24:MI:SS') AS TIME, url, BYTES
FROM available_web_details
WHERE "5mintime" >= TIMESTAMP '2012-02-10 00:00:00'
AND "5mintime" <= TIMESTAMP '2012-02-13 23:59:59'
AND username = 'asha1328874833'
AND CATEGORY = 'None240001'AND domain = '1328874833.vmware.com.'
AND (appid IN ('216.198.204.192id','216.198.207.0id','216.198.211.64id','216.198.211.128id','216.198.212.0id', '216.198.214.128id','216.198.214.192id','216.198.218.0id','216.198.220.192id','216.198.222.0id','216.198.223.32id','216.198.228.128id','216.198.229.128id',.....)))
ORDER BY TIME DESC) a
WHERE ROWNUM <= 10)
WHERE rnum > 0
执行它大约需要 5 分钟。但是当我删除 order by 子句时,它会在 4 秒内执行。您能建议我如何提高性能吗?
available_web_details 架构:
Name Null Type
------------ ---- --------------
5mintime TIMESTAMP(6)
USERNAME VARCHAR2(64)
HOST NUMBER
SRC_ZONE VARCHAR2(32)
DOMAIN VARCHAR2(512)
DST_ZONE VARCHAR2(32)
CONTENT VARCHAR2(64)
CATEGORY VARCHAR2(64)
URL VARCHAR2(1024)
HITS NUMBER
BYTES NUMBER
APPID VARCHAR2(32)
APPLICATION VARCHAR2(64)
CATEGORYTYPE VARCHAR2(64)
USERGROUP VARCHAR2(384)
我在 appid, "5mintime" 上有本地分区的索引。 available_web_details是1个月的范围分区表。
【问题讨论】:
-
你考虑过索引吗?
-
@roymustang86:你为什么要把我们的时间浪费在你毫无价值的建议上?
-
你能去掉
rnum > 0子句吗?我很确定这不会有任何作用。 -
@eaolson,它的存在是为了让第二页 Asha 可以选择
rownum <= 20的位置然后rownum > 10的位置
标签: sql performance oracle oracle11g