私のアプリは100,000人以上のユーザーを持っています。mysqlは各アーティストのカウント欄を作成したり、クエリでカウントを取得します(フォロワー数をカウントする)
私は2つのテーブルがあります:artist_id, user_id
次
- アーティスト
id(PK), name, ... , (followers) --> need???
- (両方ともPKを)
私は芸術家のそれぞれについて、フォロワーの数を取得する必要があります。
これはより論理的で正確ですか? (メモリとCPU)
A:
select id, name, followers
from artist
limit 30
B:
SELECT c.*, COUNT(b.artist_id) AS `followers`
FROM (SELECT a.id, a.name
FROM artists a
INNER JOIN following b ON a.id = b.artist_id AND b.user_id = ?) AS c
LEFT JOIN following b ON c.id = b.artist_id
GROUP BY c.id
ORDER BY `followers` DESC
limit 30
おかげ。
2つのクエリは異なる処理を行います。 1つはあなたが望むことをします。それはあなたが使うべきものです。 –
@ GordonLinoffとConcur、 –
@ KaranShah私の質問が編集されました。私がアーティストテーブル用の列を作成し、その中にカウントフォロワーを挿入すれば、より良いでしょうか?余分な列を作成する必要はありません。 (直接クエリを使用してカウントを取得する) – frzdno