私は、スレッドのタイトル、投稿数、およびその他の情報を持つフォーラムを持っています。私は他のクエリを最適化するためにそれらを完全に削除することができましたが、各スレッドのポストカウントを数えるものは、メインボードページの読み込みを遅くしています。 getPostCount($thread)
内部フォーラムでのスレッドのポストカウントを
すなわちecho $boards->getPostCount($thread)
だけである:それは各スレッドのためにこれを行う必要があり、ページごとに20件のスレッドがあるので $query = $this->db->query("SELECT COUNT(id) FROM forum_posts WHERE threadid = '$thread'
これが問題です。
私はこの情報を事前に得ることができますか、または何らかの形でこの情報を取得するために必要なクエリを最小限に抑えることができますか?いつでも150人のユーザーがいるので、1ページあたりの3Kクエリは私が望むものではありません。
ありがとうございました。
編集:私が使用するように与えられたクエリのEXPLAIN: mysql explain http://screensnapr.com/e/01hulx.png
私はこれを前に試してみました。このようなクエリを実行すると、基本的にMySQLが終了し、結果が返ってくるまでには時間がかかります。だから、mysqlに問題があるのか、ポストの量が大きすぎるのか分かりません(300k投稿、34kスレッド) – Steve
スレッドとポストテーブルの間に適切な関係が追加されました。 – Steve
@Tar: 'forum_threads(boardid、sticky、lastbump)'と 'forum_posts(threadid)'に別のインデックスを作成します。 – Quassnoi