タグを持つブログ投稿を含むデータベースがあり、タグ付きのブログ投稿を取得したいとします。私はまた、単一のクエリでそれを行うことができますしかしパフォーマンスのために複数のクエリの代わりに1つの結合クエリを使用しますか?
SELECT title, text, date
FROM POSTS
WHERE id = 1
と
SELECT tag
FROM TAGS
WHERE post_id = 1
:
私は2つのクエリを行うことができます
SELECT title, text, date, tag
FROM POSTS, TAGS
WHERE posts.id = 1
AND tags.post_id = posts.id
を、後者は少し無駄です、なぜなら、同じタイトル、テキスト、日付の列を、ブログ投稿のタグの何倍もの数だけ転送するからです。サーバーへのトリップは1回だけです。
重複データの転送を避ける後者のクエリの代替方法はありますか?それとも大したことではありません。とにかくそれを使用する必要があります。なぜなら、未使用の余分な数百バイトを転送するのは2つの別のクエリを作成するよりも安いからです。
タグ値が結果セットを膨らませているように見えます。コンマで区切られたタグ値のリストのように、あなたのニーズに合ったフォーマットがありますか? –
カンマで区切られたリストは、タグで投稿を一覧表示する場合はあまり効果的ではありません。 – Tom