<本のタイトル>
データベース速攻入門 ~モデリングからSQLの書き方まで (Software Design別冊)
<本の紹介>
(こんな方におすすめ)
・データベースについて基礎から勉強したい方
<何が書いてあったか(誰でも書ける)>
・インデックスが使用されない可能性のあるSQL文
WHE
...続きを読むRE句で
・NULLを条件に使用している
・否定の条件を使用している
・カラム列に演算を行っている
・カラム列にSQL関数を用いている
・LIKE演算子で「中間・後方一致」を行っている
・日付の条件指定
日付型に変更する際はCAST
日付から特定の部分だけ抽出する際はEXTRACT
・サブクエリは遅い、JOINを使うこと
サブクエリの結果テーブルにはインデックスが効かない
またサブクエリはネストが増え、可読性が落ちる
JOINは正しく使えばインデックスが効くので高速
・EXISTSとINの使い分け
INはまずサブクエリを実行する
サブクエリの結果が小さい場合はINを使う
EXISTは内部でJOINに近い動きをする
親クエリの結果が小さい場合はEXISTSを使う
<そこから何を学んだか(自分自身のオリジナルの意見)>
WHERE句で
・NULLを条件に使用している
・否定の条件を使用している
・EXISTSとINの使い分け
IN句の中にサブクエリを書いたら、まずサブクエリが実行される。
そのためサブクエリの結果が小さい場合はINを使うほうがよい
EXISTは内部でJOINに近い動きをする
親クエリの結果が小さい場合はEXISTSを使う
<それをどう活かすか(アウトプットによる実践経験の蓄積)>
WHERE条件でインデックスが効かない可能性のパターンを新しく知った。
またEXISTSとINの内部の動きの違いも知った。
ただいずれにしてもSQLの実行計画を毎回確認するのは絶対実施すべきと思った。