質問: 1, 3, 5, 6, 9, ..... 使うデータで上の結果は変動します。 2)1のデータのidをinを用いてとりだす。 ``` 例) SELECT * FROM X in (1, 3, 5, 6, 9, ...) ``` ここの部分は実際にはPythonで書いています。 3)それに対して更に絞り込みを行う。。。。 といった流れです。 現在、この作業が非常に計算時間がかかるので高速化を考えています。 その際2のinを用いた検索に注目しました。 ネットや本などで勉強したところinやnot inを用いたSQL文は 検索に非常に時間がかかるので、LEFT OUTER JOINとNULLかどうかの 検索で時間を短縮できると書いていました。 しかし、ネットや本などでの例ではinの後ろ(上の例だと(1, 3, 5, 6, 9, ...)) は別のテーブルを用いている場合がほとんどです。 ``` 例) SELECT * FROM X IN (SELECT ID FROM Y); ``` 今回の私のように他のテーブルを用いない場合に、 同じようにLEFT OUTER JOINを用いたSQL文はかけますでしょうか? LEFT OUTER JOINにこだわるつもりはありませんので 他の方法もございましたら ご指導ご鞭撻のほどよろしくお願いします。
回答: もしテーブルXのidにインデックスを貼るのが可能であれば、早くなるかと思われます。 もう貼られていれば、忘れてください。 また130万件に更新が沢山発生すると更新に時間が掛かるのでその場合は、お勧めしません。 さらにインデックスをお使いになるのであれば、REINDEXも速度低下を防ぐためには、検討された方がよろしいかと思います。