1

正しい結果が得られるクエリがありますが、内部クエリがあり、同じ条件が繰り返されています。私は、クエリの長​​さをできるだけ短くしようとしました。

サーバーで結果を取得するのに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 を取得するために、グループ連結を使用しました。クエリが複雑になる
4

1 に答える 1