Help us understand the problem. What is going on with this article?

SQLアンチパターン:インデックスショットガン (闇雲インデックス)

More than 3 years have passed since last update.

SQLアンチパターンを読み始めたので、1つ1つ書いてのメモです

目的

  • パフォーマンスを最適化する

アンチパターン

闇雲にインデックスを使用する

  • インデックスを定義しない、もしくは、少しだけ
  • インデックスを多く定義する、もしくは、役に立たないのを定義する
  • インデックスを活用しないクエリーを実行してしまう

インデックスは、オーバーヘッドを発生させる
- insert、update、delete の時にインデックスは更新されるが、selectの方が多いので、インデックス維持のためのオーバーヘッドと、selectのためのオーバーヘッドを比べて考える

インデックスを使えないクエリを実行する
- 複合インデックスでは、順番が大切(左から右)で、順番通りに使わないといけない
- 無駄なインデックスになる時がある

  • インデックスは、SQLの規格ではない

用いてもいいパターン

汎用的なデータベースを設計する必要がある場合
- この場合は、あとで必要なことがわかる

解決策

まとめ

データとクエリについての理解を深め、MENTOR の原則に基づいてインデックスを管理しましょう。

感想

  • MENTOR の原則
  • 複合インデックスは、設計とアプリケーションの実装両方をしないといけなさそう

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away