joinされたテーブルへのインデックスの貼り方
テーブル1
column1 column2 column3 column4 column5
テーブル2
columnA columnB columnC columnD columnE
SELECT * FROM テーブル1 as 1 INNER JOIN テーブル2 as 2 ON 1.column3 = 2.columnA AND 1.column4 = 2.columnB AND 1.column5 = 2.columnC WHERE 2.columnD = 条件1 and 2.columnE = 条件2
こういうSQLがあった場合
テーブル2のインデックスの貼り方は
・columnA,columnB,columnC,columnD
・columnA,columnB.columnC,columnE
・columnA,columnB.columnC,columnD,columnE
こういう結合条件+検索条件かと思っていた
これは間違い
postgresは最初に検索条件で絞り込みを行う為
検索条件のみのインデックスが必要
・columnD
・columnE
・columnD,columnE
・columnA,columnB,columnC
こういう貼り方が正しい