【问题标题】:optimize insert max dates from 1 million row table从 100 万行表中优化插入最大日期
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 2018-10-31
    • 1970-01-01
    相关资源
    最近更新 更多