私たちのアプリケーションはまだリリースされていないため、これは時期尚早な最適化だと思います。ライブになったら遅いクエリを監視し、それに応じてインデックスを追加することをお勧めします。
エンドユーザーや実稼働環境を品質保証のように扱うことはできません。言い換えれば、実稼働環境でそれを理解するということです。私はそれが正しい方法だとは思わないし、そのアプローチは毎日ひどく間違っていると思う。
広いブラシでペイントすることはできないため、1つ注意する必要があります。
共通のワークロードは何ですか?
それは明白または退屈に聞こえるかもしれませんが、実際には重要です。ワークロードの98%を構成する10個のクエリがある場合(非常に一般的ですが、信じられないかもしれませんが)、私の推奨事項は、運用前のハード分析です。現実的で代表的なデータを使用して、これらの10個のクエリが可能な限り良好であることを確認します(完璧は貴重な時間の無駄であり、ほとんど達成不可能です)。
ワークロードの2%を構成する他の200のクエリについては、これらは多くの労力を費やす価値がほとんどないクエリであり、実稼働環境での異常なトラブルシューティングのコーナーケースを構成します。それも現実であり、ひどく悪いことではありません。しかし、それは、インデックス作成のベストプラクティスを無視したり、データの取得に関する推定を行うことを意味するものではありません。
運用前にデータベースのパフォーマンスを把握することは一般的であり、良い習慣です。実際、このタイプの開発DBAと呼ばれるものには、比較的一般的な立場があります。
しかし...
一部の人はそれを取りすぎて、「念のために」インデックスを追加することに夢中になります。誰かがこれが欠落しているインデックスであることを推奨していますか?それと、他の4つのバリエーションを追加します。また悪い考え。データの取得だけでなく、データの変更についても考える必要がありますか?テーブルにインデックスが多いほど、一般的に言えば、データを変更するときのオーバーヘッドが大きくなります。
ほとんどのものと同様に、健全なバランスがあります。
ちょっとした面白いメモとして...「インデックス」の複数形
「インデックス」は金融関係者向けです
「インデックス」は私たちのためです