SQLアンチパターンを読み始めたので、1つ1つ書いてのメモです
目的
- パフォーマンスを最適化する
アンチパターン
闇雲にインデックスを使用する
- インデックスを定義しない、もしくは、少しだけ
- インデックスを多く定義する、もしくは、役に立たないのを定義する
- インデックスを活用しないクエリーを実行してしまう
インデックスは、オーバーヘッドを発生させる
- insert、update、delete の時にインデックスは更新されるが、selectの方が多いので、インデックス維持のためのオーバーヘッドと、selectのためのオーバーヘッドを比べて考える
インデックスを使えないクエリを実行する
-
複合インデックスでは、順番が大切(左から右)で、順番通りに使わないといけない
-
無駄なインデックスになる時がある
-
インデックスは、SQLの規格ではない
用いてもいいパターン
汎用的なデータベースを設計する必要がある場合
- この場合は、あとで必要なことがわかる
解決策
まとめ
データとクエリについての理解を深め、MENTOR の原則に基づいてインデックスを管理しましょう。
感想
- MENTOR の原則
- 複合インデックスは、設計とアプリケーションの実装両方をしないといけなさそう