長いクリックリストを、さまざまなランダーに関連する関連テーブルに分解する最善の方法を見つけようとしています。ネストされたステートメントを最適化する
SELECT LANDER, COUNT(DISTINCT IP) AS CLICKS
FROM
(
SELECT LANDER, USER_GROUP, IP
FROM
(
SELECT LANDER USER_GROUP, IP, TIME FROM CLICKS_IN WHERE USER_GROUP = " . $_SESSION["KKGR"] . "
)a
WHERE TIME BETWEEN '" . date_format($sdate, 'Y/m/d') . "' AND '" . date_format($edate, 'Y/m/d') . "'
)a
GROUP BY LANDER HAVING COUNT(*)>5 ORDER BY CLICKS DESC";
ユニークなクリックのリストを効率的に取得するために私がこれまでに思いついたのは何ですか。私の2つの問題は、可能であれば、準備されたクエリを書くよりはるかに多くのことですが、ネストされたSQL文ではどうやってそれを行うのか分かりませんし、2番目に、長期間運転する可能性があります。これは単純なSQL文よりもはるかに効率的に実行されていますが、このような場合には、一度RAMにテーブルの多くをバッファリングしてしまうことが懸念されます。
:最適化のための説明計画を使用してください。常に最初に行く計画です。それを解釈するのに助けが必要な場合は、質問に出力を(テキストとして)追加してください。遅さの最も一般的な問題はインデックスがありません –