システムにかなり基本的なクエリがありますが、クエリに内部結合を追加すると、実行時間の形式(0.02秒から6.0秒)がかかります。結合列にインデックスがないように見えますが、インデックスは存在します。以下はexplain plan
2つのクエリのうちの1つです。何が起こっている?
はるかに高速なクエリ...
1つの追加結合を使用した低速クエリ(table ='bd')
これがSQLです...
SELECT DISTINCT rsb.id
FROM report_session_bill rsb
INNER JOIN bill b
ON b.id = rsb.bill_id
INNER JOIN bill_master bm
ON bm.id = b.bill_master_id
INNER JOIN meter m
ON m.id = b.meter_id
-- slow join below...
INNER JOIN building bd
ON bd.id = m.building_id
WHERE rsb.report_session_id = 20693
テーブル統計...
- report_session_bill:1,000〜10,000行、1時間ごとに削除
- 請求書:100万行
- bill_master:75万行
- メーター:10k行
- 建物:7k行