は、ここに私のテーブルです:
[category]
idCategory
name
[postCategory] (a post can be in more than 1 category)
idCategory
idPost
[post]
idPost
post
[comment]
idComment
idPost
inputDate
comment
私がする必要がありますするつもりです特定のカテゴリの特定の時間範囲内のすべての投稿を表示します(時刻は「コメント」からのものです)。時間範囲は固定されています(1日、1週間、1ヶ月、1年)。 (インデックスを使用してほか)、これを最適化する方法はあり...
SELECT DISTINCT(post.idPost), post.post
from post
INNER JOIN comment ON post.idPost = comment.idPost
INNER JOIN postCategory ON postCategory.idPost = post.idPost
WHERE postCategory.idCategory = <myCategoryId>
AND comment.inputDate >= <today - time range>
レッツ
は、私は10K投稿や500kのコメントをサポートしたいと言う: は、ここで私がして来た何ですか?ストアドプロシージャ、テンポラリテーブルを持つクエリを使用し、 "precalculated"フィールドをどこかに追加しますか?ありがとうございます! :)
FWIWでは、DISTINCT(post.idPost)を使用すると、DISTINCTが1つの列にのみ適用されるという誤解があります。これは間違っています。これは、かっこを使用するかどうかにかかわらず、常に選択リストによって返されるタプル全体に適用されます。これはあなたの質問に関連していない、それはちょうど参考です。 –