現在、jsPerf に対して次のクエリを使用しています。jsPerf を知らない可能性が高い -pages
テスト ケース / リビジョンを含むテーブルとtests
、テスト ケース内のテストのコード スニペットを含むテーブルが 2 つあります。
現在、 には 937 レコード、pages
には 3817 レコードがありtests
ます。
ご覧のとおり、このクエリが使用されている「Browse jsPerf」ページをロードするにはかなりの時間がかかります。
クエリの実行には約 7 秒かかります。
SELECT
id AS pID,
slug AS url,
revision,
title,
published,
updated,
(
SELECT COUNT(*)
FROM pages
WHERE slug = url
AND visible = "y"
) AS revisionCount,
(
SELECT COUNT(*)
FROM tests
WHERE pageID = pID
) AS testCount
FROM pages
WHERE updated IN (
SELECT MAX(updated)
FROM pages
WHERE visible = "y"
GROUP BY slug
)
AND visible = "y"
ORDER BY updated DESC
WHERE
句に表示されるすべてのフィールドにインデックスを追加しました。もっと追加する必要がありますか?
このクエリを最適化するにはどうすればよいですか?
PS PHP でキャッシング システムを実装できることはわかっています — おそらく実装するので、教えないでください :) このクエリをどのように改善できるかを知りたいだけです。