かなり大きなクエリがあります。
パフォーマンスは常に合理的に許容できるものでしたが、現在、この問題が発生しています。
もちろん、エイリアスを使用してテーブルに複数回参加する必要がありますが、そうするとパフォーマンスが大幅に低下します。
膨大なクエリなので、すべてを投稿することはできませんが、要点は次のとおりです。
SELECT table1.name,
ALIAS1.CODE AS "Sequence"
...
FROM table1
...
LEFT JOIN table2 ALIAS1
ON ALIAS1.COLUMN1 = table1.key1
AND ALIAS1.COLUMN2 = 'aaba'
AND ALIAS1.COLUMN3 = '00001'
...
これは問題なく、約 90 秒で実行されます。しかし、次のように同じテーブルを再度追加すると、実行時間は指数関数的に増加します (これまでのところ 2 時間で、まだ実行中です)。
SELECT table1.name,
ALIAS1.CODE AS "Sequence",
ALIAS2.CODE AS "Rating"
...
FROM table1
...
LEFT JOIN table2 ALIAS1
ON ALIAS1.COLUMN1 = table1.key1
AND ALIAS1.COLUMN2 = 'aaba'
AND ALIAS1.COLUMN3 = '00001'
LEFT JOIN table2 ALIAS2
ON ALIAS2.COLUMN1 = table1.key1
AND ALIAS2.COLUMN2 = 'ffhr'
AND ALIAS2.COLUMN3 = '00107'
私が知る必要があるのは、これを引き起こしている可能性のある要因は何ですか?
インデックスは問題ないように見えます。そうしないと、最初の結合が問題になります。
2 番目の結合がそのような問題になるのはなぜですか?
私は実際には同じテーブルに 3 回参加する必要がありますが、現状ではこれは当然のことです。