1

スレッドのタイトル、投稿数、その他の情報があるフォーラムがあります。他のクエリを最適化/完全に削除することができましたが、各スレッドの投稿数をカウントするクエリは、メインボードページの読み込みを遅くしています。

すなわちecho $boards->getPostCount($thread)

内部getPostCount($thread)はただです: $query = $this->db->query("SELECT COUNT(id) FROM forum_posts WHERE threadid = '$thread'

これは、スレッドごとにこれを行う必要があり、ページごとに20のスレッドがあるため、問題になります。

この情報を事前に取得する方法や、この情報を取得するために必要なクエリを最小限に抑える方法は他にありますか?常に150人のユーザーがいるので、ページの読み込みごとに3Kのクエリは必要ありません。

ありがとう。

編集:私が使用するように与えられたクエリの説明: mysql Explain http://screensnapr.com/e/01hulx.png

4

1 に答える 1

0

結合を使用する:

SELECT  t.*, COUNT(fp.id)
FROM    threads t
LEFT JOIN
        forum_posts fp
ON      fp.threadid = t.id
ORDER BY
        t.last_updated DESC
LIMIT 20

ただし、これでも、エンジンはリロードごとに各スレッドの投稿をカウントする必要があります。

クエリキャッシュを有効にするか(そのようなクエリに最適です)、投稿が作成または削除されるたびにpost_countフィールドを追加して更新することができます。threads

于 2012-04-27T20:48:00.257 に答える