何がおきてしまったか
- しくじりってほどじゃないけど、実装してて気づいたこと
- データが多いテーブルへの
in
とかnot in
は遅い。
sample.sql
select r0.id from reserves r0
where
r0.reserved_at is not null
and r0.member_cd not in (select member_cd from members)
しくじりはなぜおこってしまったのか
- オプティマイザがいい感じにしてくれるかと思ったらそんなことなかった
- explainかけたら全然index効いてなかった
二度としくじらないためにどうしたのか(どうしようと思っているか)
-
join
すればちゃんとindex効いて速い。 - クエリの検証はまあまあデータ入ってるテーブルでやろう。
- データ少ないとクソクエリでも高速に動いてしまう。
sample.sql
select r0.id from reserves r0
left outer join members m on m.member_cd = r0.member_cd
where
r0.reserved_ts is not null
and m.member_cd is null