3

我有一个 group by 查询,它只返回 1 行 4 列。当我运行这个选择查询时,它需要 1-2 分钟,因为这个查询中涉及的表非常大(其中一个表有 6000 万条记录)但是当我在插入语句中使用这个查询时,它需要大约 10 分钟或更长时间。

有人能说出背后的原因吗?我只插入一行应该需要 1 分钟的时间,但为什么需要 10 分钟?还请提供一些建议来解决此类问题,因为在搜索时我主要是在寻找更快的批量插入方法。以下是供审查的查询结构

select col1, count(loan), sum(A), sum(B) 
from
(select 'dummy' as col1, X.loan, BT.A, BT.B,
row_number() over (partition by X.loan order by BT.C desc) rnum
from Big_Table BT, X
where X.loan = BT.loan
and  X.date<  "some date"
and X.date>"another date")
where rnum =1
and B> "some value"
group by col1

对于 Big_Table 索引位于列 loan 和 C。

4

1 回答 1

0

此查询可能会更快地为您提供相同的结果:

SELECT "dummy", COUNT(BT.loan), SUM(BT.A), SUM(BT.B)
FROM Big_Table BT
JOIN (
  SELECT X.loan, max(BT.C) as C
  FROM X
  JOIN Big_Table BT ON X.loan = BT.loan
  WHERE X.date > "some date"
    AND X.date < "another date"
  GROUP BY X.loan ) partitioned
ON BT.loan = partitioned.loan AND BT.C = partitioned.C
WHERE BT.B > "some value"

并确保您在 X 上为loandate以及 Big_Table 上为loanCB.

于 2013-04-03T21:32:36.803 回答