我在加入2个表并在where子句中使用日期时遇到问题
查询#1需要很长时间才能运行
查询#2运行良好(无连接)
查询#3运行正常(没有where子句)
代码
Query 1
select t1.id
from t1
inner join t2
on t1.id = t2.inst_id
where t1.change_date >= to_date('04-06-2018', 'DD-MM-YYYY')
; -- does not work
Query 2
select t1.id
from t1
--inner join t2
--on t1.id = t2.inst_id
where t1.change_date >= to_date('04-06-2018', 'DD-MM-YYYY')
; -- work in < 1s
Query 3
select t1.id
from t1
inner join t2
on t1.id = t2.inst_id
--where t1.change_date >= to_date('04-06-2018', 'DD-MM-YYYY')
; -- works in < 1s
你知道为什么join和where子句与日期的组合有问题吗?
答案 0 :(得分:-1)
如果没有你的表格结构/索引/统计数据,我只能建议检查:
Console.ReadKey()
修改强>:
更正确的方法是添加扩展统计信息:
WITH cte AS (
SELECT /*+materialize*/ t1.id
FROM t1
WHERE t1.change_date >= to_date('04-06-2018', 'DD-MM-YYYY')
)
SELECT *
FROM cte c
JOIN t2
ON c.id = t2.inst_id;