【发布时间】:2021-12-28 10:28:12
【问题描述】:
我有远程连接到非 oracle 数据库。
我尝试执行两个 sql 的 . 远程数据库上的列日为字符。
这个没问题
select * from tab
where day='2021-11-11'
执行计划
PLAN_TABLE_OUTPUT
Plan hash value: 1788691278
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Inst |IN-OUT|
| 0 | SELECT STATEMENT | | 20 | 44760 | 200 (0)| 00:00:01 | | |
| 1 | REMOTE | EV_LOGS | 20 | 44760 | 200 (0)| 00:00:01 | RS_HD~ | R->S |
这永远不会结束
select * from tab
where day=to_char(sysdate-5,'yyyy-mm-dd')
PLAN_TABLE_OUTPUT
Plan hash value: 2703195431
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Inst |IN-OUT|
| 0 | SELECT STATEMENT | | 20 | 44760 | 200 (0)| 00:00:01 | | |
|* 1 | FILTER | | 20 | 44760 | 200 (0)| 00:00:01 | | |
| 2 | REMOTE | EV_LOGS | | | | | RS_HD~ | R->S |
Predicate Information (identified by operation id):
1 - filter("day"=TO_CHAR(SYSDATE@!-20,'yyyy-mm-dd'))
我尝试了不同的提示,但其中任何一个都没有帮助。我想我可以重写它以立即执行,但是如何避免呢?
【问题讨论】:
-
请显示两个语句的完整执行计划(使用
dbms_xplan.display(format => 'TYPICAL +PREDICATE'))。现在还不清楚这里发生了什么。