我有一个SQL查询,我需要优化,因为它现在似乎永远运行。 我跑了5个多小时但似乎没有结束。
SELECT
a.HD_ID,
CASE WHEN date_from > b.date_tag THEN date_from
ELSE b.date_tag
END date_from1,
CASE WHEN trunc(date_to)=b.date_tag THEN date_to
ELSE b.date_tag + interval '23 hours, 59 minutes,59 seconds'
END date_to1
FROM table1 a
JOIN table2 b
ON (b.date_tag between trunc(date_from) and date_to)
WHERE a.first_date between '2015-08-11' and sysdate-3;
我认为问题是由于日期字段,但我不知道有任何优化日期操作的方法。 有人可以帮帮我吗?
答案 0 :(得分:0)
请尝试:
SELECT
a.HD_ID,
CASE WHEN date_from > b.date_tag THEN date_from
ELSE b.date_tag
END date_from1,
CASE WHEN trunc(date_to)=b.date_tag THEN date_to
ELSE b.date_tag + interval '23 hours, 59 minutes,59 seconds'
END date_to1
FROM table1 a
JOIN table2 b
ON trunc(date_from) >= b.date_tag <= date_to
WHERE '2015-08-11' >= a.first_date <= sysdate-3;