从 100 万行表中优化插入最大日期
Posted
技术标签:
【中文标题】从 100 万行表中优化插入最大日期【英文标题】:optimize insert max dates from 1 million row table 【发布时间】: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 JOIN
s 和AND
s 则不然。
【参考方案1】:
确定该表的索引是什么,并在可能的情况下加入它们。同样更具体,不限制你想要的数据,总是更好。
这是一个有用的网站,我经常查看优化建议: http://beginner-sql-tutorial.com/sql-query-tuning.htm
【讨论】:
以上是关于从 100 万行表中优化插入最大日期的主要内容,如果未能解决你的问题,请参考以下文章
根据日期和在 Snowflake 中的另一个表中为该日期列出的最大行数限制插入到表中的行