大家好!遇到一个问题。
在Tab1表中有一个字符类型字段A,日期类型字段B 。Tab1建有索引index,使用A列和B列。子查询中使用dense_rank()函数的情况:
select ... from Tab2 a left join
(select ...,dense_rank() over (partition by A order by B) rq_xh from Tab1) b
on ...
这条语句运行大概需要30S
父查询中使用dense_rank()函数的情况:
select ...,dense_rank() over (partition by b.A order by b.B) rq_xh
from Tab2 a left join Tab1 b on ...
这条语句运行大概需要2S请教大家,为什么两种情况运行时间差距那么大?
在Tab1表中有一个字符类型字段A,日期类型字段B 。Tab1建有索引index,使用A列和B列。子查询中使用dense_rank()函数的情况:
select ... from Tab2 a left join
(select ...,dense_rank() over (partition by A order by B) rq_xh from Tab1) b
on ...
这条语句运行大概需要30S
父查询中使用dense_rank()函数的情况:
select ...,dense_rank() over (partition by b.A order by b.B) rq_xh
from Tab2 a left join Tab1 b on ...
这条语句运行大概需要2S请教大家,为什么两种情况运行时间差距那么大?
解决方案 »
- 存储过程,更新表时“表或视图不存在”。
- 嵌套执行SQL的问题
- 求oracle 10g 数据库的 tnsnames.ora的详细路径
- oracle存储过程的参数存放位置
- 这个功能大家看Sql语句是否能实现?(在线急用!)
- 初学:与CONSTRAINT Clause相关问题,大家请帮帮在线等谢谢^_^
- 高分求教:如何通过sql语句判断提取的数据特定某字段为数字型
- 请问下面的(+)是什么意思WHERE "T1"."FIELD5_NAME" = "T2"."FIELD5_NAME"(+) AND "T2"."FIELD5_NAME" = "T3"."FIELD5_NAME"(+)
- 怎么找到oo4ocodewiz.exe???--急
- 一个超级水的问题--在线等候!
- 迅雷的一道题
- 怎么实现通过外网于远程oracle数据库的对接??
第一个语句是先用分析函数里对TAB1排序,然后再边左连接
第二个语句是先左连接,再排序
如果TAB2比较大,那排序时间就长喽
如果TAB2比较大,那排序时间就长喽。 是指第一个语句吗?
如果这样的话,是否有什么解决方法呢?例如,将作为连接条件的字段做为Tab2的索引字段。