从 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 JOINs 和ANDs 则不然。 【参考方案1】:

确定该表的索引是什么,并在可能的情况下加入它们。同样更具体,不限制你想要的数据,总是更好。

这是一个有用的网站,我经常查看优化建议: http://beginner-sql-tutorial.com/sql-query-tuning.htm

【讨论】:

以上是关于从 100 万行表中优化插入最大日期的主要内容,如果未能解决你的问题,请参考以下文章

关于Java导出100万行数据到Excel的优化方案

根据日期和在 Snowflake 中的另一个表中为该日期列出的最大行数限制插入到表中的行

Hive:无法在具有 100 个或更多分区列的表中插入数据错误:在最大长度为 767 的列“PART_NAME”中

从日期小于最大日期的 Hive 表中选择

优化 100 万行的查询

从查找表中获取每个类型和每个日期的最大 ID