【发布时间】:2013-03-21 16:16:54
【问题描述】:
我需要从满足以下条件的明细表中获取最大日期。
该事务表达到近 100 万行。
还有比这更好的查询吗?
insert into SCH1.maxDATES
select a.ID, a.STATUS, max(detail.REGISTER_DATE) max_DATE
from SCH1.User a
inner join SCH1.Transaction detail on detail.ID = a.ID
where a.STATUS = 3 and detail.REGISTER_DATE is not null
group by a.ID, a.STATUS
【问题讨论】:
-
当您可以根据需要简单地选择这些值时,为什么要将它们插入到不同的表中?
-
请省略插入。它是一个辅助表,比某个时刻的最大时间。
-
查询没问题,你的索引是多少?
-
您可能应该将
detail.REGISTER_DATE is not null向上移动到连接子句中(即使优化器可能正在为您执行此操作);始终在您的连接中尽可能多地进行过滤。请注意,根据您粘贴它们的位置,偶尔会有细微的不同效果,但对于INNER JOINs 和ANDs 则不然。
标签: sql db2 query-optimization