質問がありました:
SELECT a.nick,grp,count(*) FROM
help_mails
h JOIN accounts a ON h.helper=a.id WHERE closed=1 GROUP BY helper, grp, a.nick
この結合の何が問題になっていますか?2つのクエリを実行したとき:
SELECT helper,grp,count(*) FROM
100倍高速です。help_mails
h WHERE closed=1 GROUP BY helper, grp;
SELECT nick FROM accounts WHERE id IN (...)
EXPLAINはこれを返します:
idselect_typeテーブルタイプpossible_keyskeykey_len ref rows Extra 1 SIMPLE h ref close close 1const1846一時的なものを使用します。filesortの使用 1 SIMPLE a ref PRIMARY PRIMARY 4 margonem.h.helper1whereを使用します。インデックスの使用
account.id、help_mails.grp、help_mails.closedがインデックスを取得しました。