2016-05-04 11 views
0

mysqliクエリに対してSQLコマンドを解析しています。私は様々な条件でレコードの数を取得したいと思います。私は現在unionでこれを行いますが、それは非常に遅いです。これを行うより効率的な方法がありますか?さまざまな条件でカウントを取得します

$sql = "SELECT COUNT(*) as Total FROM table1 WHERE GroupId = 2 UNION "; 
$sql .= "SELECT COUNT(*) as Likes FROM table1 WHERE LikesCol IS NOT NULL AND GroupId = 2 UNION "; 
$sql .= "SELECT COUNT(*) as Commented FROM table1 WHERE CommentCol > 0 AND GroupId = 2 UNION "; 
$sql .= "SELECT COUNT(*) as Shared FROM table1 WHERE SharedCol > 0 AND GroupId = 2"; 

あなたは私がポールのヒントになど

+0

GroupIdにインデックスがありますか? –

答えて

2
SELECT sum(GroupId = 2) as Total, 
     sum(LikesCol IS NOT NULL AND GroupId = 2) as Likes, 
     sum(CommentCol > 0 AND GroupId = 2) as Commented, 
     sum(SharedCol > 0 AND GroupId = 2) as Shared 
FROM table1 

とさらに良い感謝を共有し、コメントし、私はへのドリルダウンしていますGroupId = 2その後、テーブルからすべてのレコードを選択してい気づくでしょうとして

SELECT count(*) as Total, 
     sum(LikesCol IS NOT NULL) as Likes, 
     sum(CommentCol > 0) as Commented, 
     sum(SharedCol > 0) as Shared 
FROM table1 
WHERE GroupId = 2 
+2

'WHERE GroupId = 2' –

関連する問題