正しい結果が得られるクエリがありますが、内部クエリがあり、同じ条件が繰り返されています。私は、クエリの長さをできるだけ短くしようとしました。
サーバーで結果を取得するのに12分かかり、将来多くの問題が発生する可能性があるため、クエリの複雑さを軽減するのを手伝ってくれる人はいますか?
問題は、同じ条件が繰り返され、クエリが内部クエリを使用していることです。
これらの mysql パラメータを使用してクエリを実行します:-
その中の sum,if,GROUP_CONCAT。
クエリ:-
select
sum(
IF(priority="P1",1,0)) P1,
sum(
IF((timediff(delta_ts,creation_ts) > "00:02:00")
&& (priority="P1") ,1,0))P1_exeeded,
(select
GROUP_CONCAT( DISTINCT bug_id)
from bugs
where
(
IF((timediff(delta_ts,creation_ts) > "00:02:00") && (priority="P1")
&& (product_id=237)
&&(bugs.resolution='FIXED')
&&(bug_status="RESOLVED")
&&(bugs.creation_ts >='2013-06-14 09:00:00'
&& bugs.creation_ts <= '2013-06-16 08:59:59') ,1,0)
)
) as bug_ids,
SUM(
IF(priority="P2",1,0)) P2,
sum(
IF((timediff(delta_ts,creation_ts) > "00:01:00")
&& (priority="P2") ,1,0))P2_exeeded,
(select GROUP_CONCAT( DISTINCT bug_id)
from bugs
where
(
IF((timediff(delta_ts,creation_ts) > "00:02:00")
&& (priority="P2")
&& (product_id=237)&&(bugs.resolution='FIXED')
&&(bug_status="RESOLVED")&&(bugs.creation_ts >='2013-06-14 09:00:00'
&& bugs.creation_ts <= '2013-06-16 08:59:59') ,1,0)
)
) as bug_ids,
SUM(
IF(priority="P3",1,0)) P3count,
SUM(
IF(priority="P4",1,0)) P4count
from bugs
where bugs.product_id=237
and bugs.resolution='FIXED'
and bugs.creation_ts >='2013-06-14 09:00:00'
and bugs.creation_ts <= '2013-06-16 08:59:59'
and bug_status="RESOLVED";
結果:-
+--------+------------+---------+------+------------ +---------+---------+---------+ | | P1 | P1_exeeded | バグ ID | P2 | P2_exeeded | バグ ID | P3カウント | P4カウント | +--------+------------+---------+------+------------ +---------+---------+---------+ | | 7 | 1 | 3743304 | 6 | 1 | 3743305 | 5 | 1 | +--------+------------+---------+------+------------ +---------+---------+---------+
- バグ ID を取得するために、グループ連結を使用しました。クエリが複雑になる