インデックスを使用していくつかの SQL クエリを最適化する必要があります。選択、挿入、削除のクエリがあります。選択クエリの場合にインデックスが役立つことは明らかです。しかし、挿入クエリと削除クエリはどうなるでしょうか?インデックスを使用すると、パフォーマンスに悪影響が及ぶでしょうか?
3 に答える
はい。
インデックス作成は、クエリ パフォーマンスと書き込みパフォーマンスの妥協点です。最もよく使用されるクエリを分析して、必要な読み取りパフォーマンスを得るために必要なインデックスを慎重に選択する必要があります。挿入/更新コストに注意しながら。
インデックスはクエリ中のパフォーマンスに役立ちますが、インデックスを維持する必要があり、更新または挿入時にコストがかかります。
これは、(サイズの制約に加えて)テーブルのすべての列にインデックスを付けるだけではない理由でもあります。更新のパフォーマンスが大幅に停止する可能性があります。
はい。インデックスは、読み取りクエリを最適化するために慎重かつ適切に使用する必要があります。挿入と削除は、追加するインデックスが増えるほどパフォーマンスが低下します。
はい。Insert、Update、または Delete ごとに、データベース エンジンはテーブル自体を変更するだけでなく、操作が影響するインデックスも変更する必要があるためです。
もちろん、この影響の程度はインデックスに依存します (インデックスの幅、クラスター化されているかどうか、インデックスの更新を実行するために必要なディスク IO の数など)。
このため、インデックスは控えめに追加する必要があり、いくつかの明白なケース (主キー/一意の制約など) を除いて、パフォーマンスの問題が存在する (または確実に予測できる) 場合にのみ追加する必要があります。