4
私は四半期で、私の販売代理店の売上のテーブルを持っている:この結合を行うより良い方法はありますか?
Agent Quarter Sales ---------------------------- Alex Andersen 2011Q1 358 Alex Andersen 2011Q2 289 Alex Andersen 2011Q3 27 Alex Andersen 2011Q4 2965 Brian Blogg 2010Q3 277 Brian Blogg 2010Q4 123 Brian Blogg 2011Q1 783 Brian Blogg 2011Q2 0 Christy Cliff 2011Q2 777 Christy Cliff 2011Q3 273 Christy Cliff 2011Q4 111 Christy Cliff 2012Q1 901
はその四半期の各エージェントの早い四半期の売上高を取得するための最も簡単な、最も効率的なクエリは何ですか?
それは「各エージェントの第一四半期は何ですか?」を見つけるのは簡単だ:
SELECT agent, min(quarter) FROM salestable GROUP BY agent
しかし、これは売上高が含まれていないので、私は私が参加するんだろうと思って:
SELECT agent, sales
FROM salestable s1
JOIN
(
SELECT agent AS e, MIN(quarter) AS q
FROM salestable
GROUP by employee
) AS q1 ON q1.e=s1.agent AND q1.mq=s1.quarter
を
これは私のデータセットでは受け入れがたいほど遅いです。カーソルを使用することができれば、テーブルを1回だけ通過するだけですが、クエリを使用すると結合が必要なようです。そうですか?
あなたのクエリがよさそうだ...私はカーソルが何かを改善するとは思わない...何インデックスあなたは 'salestable'に持っています? –
'(エージェント、四半期)'インデックスがありますか? –
インデックスが(エージェント、四半期)であることを確認してください。カーソルを使用すると、クエリが瞬間的になります。投稿したクエリを使用すると10分かかります。 ??? – AnotherParker