タグ

2016年4月20日のブックマーク (1件)

  • 【SQL】EXISTS句の中は"SELECT *" か"SELECT 1"か - 16bit!

    備忘を兼ねて。 「SQLを実行する際、"IN"を使うよりも"EXISTS"を使う方が速い」 というのは割と周知の事実ですが、 じゃあ、EXISTSを使う場合、 「その中身は"SELECT *"を使うべきなのか"SELECT 1(定数)"を使うべきなのか」 というと、こっちは少々微妙な問題のようです。 //遅い SELECT * FROM tbl_A WHERE tbl_A.col_a IN (SELECT col_b FROM tbl_B); //速い SELECT A.* FROM tbl_A as A WHERE EXISTS (SELECT * FROM tbl_B as B WHERE A.col_a = B.col_b);というのも、DBMSごと(さらに言えばVersionごと)に、どっちが速いかが変わってくるようなんですね。 簡単に調べてみた感じだと、だいたいこんな感じ。 DB

    【SQL】EXISTS句の中は"SELECT *" か"SELECT 1"か - 16bit!
    ugnews
    ugnews 2016/04/20