2016-08-29 5 views
1

私はこのコードをしました:COUNT()は2回実行されますか?

"SELECT post_id, COUNT(post_id) AS number_of_votes, (SUM(vote)/COUNT(post_id)) AS result 
              FROM " . LOG_TABLE . " , $wpdb->posts AS p 
              WHERE post_id = p.ID 
              AND p.post_status = 'publish' 
              GROUP BY post_id 
              HAVING COUNT(post_id) >= 2 
              ORDER BY result DESC, COUNT(post_id) DESC 
              LIMIT 10 
              " 

私はCOUNTは二回、最初の行の実行に使用されるかどうかを知りたいのですが?

EDIT:それはテーブルのアクセスもあれば二度、私が意味する、実行のために二回

よろしく、 ダリオ

+0

あなた自身で確認できませんか? – LBes

+0

@LBesどうやってそれをテストしますか? – Strawberry

答えて

2

あなたは以下の形式のサブクエリを使用していない限り、表は(それはあなたが数によって意味したものであれば、2回アクセスされます)一度だけアクセスし、そのカウントされるのは一度だけ計算され、どこでも

select id,(select min(id) from table1 t2 where t1.id=t2.id)b 
from 
table1 t1 
使用されます
+0

これは間違っています!なぜこの答えが承認されたのですか? 'COUNT'は使用されるたびに1回、2回計算されます! – sagi

+1

@sagi:あなたが言っていることは正しいです、私はユーザーがテーブルから2回アクセスされたことを意味すると思います。私は私の答えで言いました – TheGameiswar

1

はい、2 COUNT()が二度実行されますが、それは行がなければならないという意味ではありません2回処理される。データの各行について、オプティマイザは2つのカウンタと1つの合計を設定します.1つのカウントまたは2つのカウンタを使用する場合、大きな違いはありません。

1

はい、カウントは2回実行されます。ここでは正確に何が起こったのですか。 このコード部分COUNT(post_id) AS number_of_votes count投稿IDの総数とコード(SUM(vote)/COUNT(post_id))の総数が合計して投稿IDの総数でさらに除算されます。はい、カウントは2回実行されていますが、行は処理されません複数回。

関連する問題