私はPostgres 9.6を使用しています。私はstory
とslide
という2つのテーブルを持っています:slide
は、story
への外部キーを持っています。JOINの前または後にフィールドを抽出するのが好ましいですか?
標準の間のパフォーマンスの面で違いがこのようなクエリのJOINあり:
SELECT story.*, slide.name, slide.story_id
FROM story
JOIN slide ON story.id=slide.story_id
WHERE slide.index=0;
そして、最初の関心のフィールドを抽出し、だけにして、それらを結合し、このようなサブクエリ、:
SELECT story.*, slide.name, slide.story_id
FROM story
JOIN (SELECT * FROM slide WHERE index=0) slide
ON story.id=slide.story_id;
私はEXECUTION ANALYSE
の出力を見てきましたが、どちらもまったく同じ実行計画があるようです。
パフォーマンス用語に違いがない場合は、他のものよりも文体的に好まれますか?
バージョン1のほうがはるかに優れています。 – jarlh
パフォーマンスの違いがあるとは思っていません。私は最初のバージョンを好む。私はちょうどSELECT *を使用しないことをお勧めします。代わりに列名のリストを使用します。 – etsa