【发布时间】:2016-11-11 05:53:34
【问题描述】:
有什么方法可以改进下面的查询,当我只检查一条记录时,它的工作速度更快(NAME='T 104'),但是对于没有 NAME='T 104' 的所有现有(113 条记录)记录,它需要大约5 秒:
下面的一个需要 73 毫秒:
select
name, PRODUCTION_DAY, daytime
from
(select
name, PRODUCTION_DAY, daytime,
row_number() over (partition by name order by daytime desc) as seqnum
from
RESULT_1 t
where
PRODUCTION_DAY < '15-May-2015'
)
where
seqnum = 1 and NAME = 'T 104'
下面的需要 4 秒:
select
name, PRODUCTION_DAY, daytime
from
(select
name, PRODUCTION_DAY, daytime,
row_number() over (partition by name order by daytime desc) as seqnum
from
RESULT_1 t
where
PRODUCTION_DAY < '15-May-2015'
)
where
seqnum = 1
谢谢, S
【问题讨论】:
-
您能否分别显示两个查询以及它们的运行时间?
-
查看更新的查询
-
你能在这两个查询上运行
EXPLAIN吗?对于您的观察,我没有看到明显的答案。 -
请edit您的问题添加两个语句的执行计划。 Formatted 文本 请no screen shots
-
production_day的数据类型是什么?它看起来像是日期或时间戳,但您使用字符串对其进行过滤。
标签: sql oracle window-functions