私のプロシージャのクエリは19.546秒かかるので、下のスナップショットの一番下に表示されます。そして、あなたはそこに60370アイテムの合計データを見ることができます。プロシージャの問合せには多くの時間がかかりますが、19.546秒は長すぎます。プロシージャメソッドを最適化する方法は?
だから、私の手順を最適化する方法はありますか?これは私の手続きです:
BEGIN
declare icount int default 0;
declare exit handler for SQLEXCEPTION set out_a=1;
select count(*) into icount from P01 where P0101=in_a;
if icount=0 THEN
set out_a=1;
set out_b=0;
set out_c='';
set out_d='';
ELSE
set out_a=0;
select P0106,P0107,P0108 into out_b,out_c,out_d from P01 where P0101=in_a;
if in_b=1 then
select P0202,P0203,P0204,P0205 from P02 where P0201=in_a and P0204=out_b+1 order by P0202;
ELSE
select P0202,P0203,P0204,P0205 from P02 where P0201=in_a and P0204>=out_b+1 order by P0202;
end if;
end if;
END
手順の時間を短縮する方法はありますか?
EDIT
私は私のテーブルp02
を照会する場合は、20 +秒を過ごすことになります:
select * from p02;
だから、どこ多分問題?
これらのクエリで 'EXPLAIN'を実行すると、インデックスが見つからない箇所が見つかります。 – miken32
@ miken32私は自分の質問を更新すると、テーブルを照会するのにも時間がかかることがわかります。 –