テーブルからインデックスを削除すると、SQL Serverエンジン側ではどうなりますか?ノンクラスタード・インデックスを削除するとどうなりますか?
詳細:私は実稼働環境で動作するデータベースを持っています。
このデータベースでは、定期的にデッドロックを作成するクエリがあります。私はデッドロックを作成するクエリを見つけた、私のコンピュータ上でそれを実行し、その実行計画を示しています。 SQL Server Management Studioでは、特定のテーブルにインデックスを追加することを提案しています。
私のインデックスは意味をなさないが、私の問題は、このテーブルではすでに3つのインデックスがあり、正当に使用されているかどうか、または特定の役割。
テーブルにインデックスをもう1つ追加するだけで済みますが、テーブルにデータを追加/更新/削除するたびに支払うコストについては心配です。
自分のマシンでいくつか試行しましたが、今日作成しているインデックスをエンジンが選択するために、少なくとも2つの他のインデックスを削除する必要があるようです。エンジンを強制的にインデックスに追加すると(他のすべてを削除したため)、クエリは10倍高速に実行されます。
私は単純にDROP Index
コマンドを大きな問題なく使用できますか?私は何かを再構築する必要はありませんか?
無駄なインデックスを削除することはできますが、[SQL Serverに特定のインデックスを使用させる]クエリヒントを追加することもできます(https://blog.sqlauthority.com/2009/02/08/sql-server-introductionインデックスへのヒント - ヒント - パート2 /) –
この最近の[@TrumpDBA](https://twitter.com/TrumpDBA/status/826154547299151872)のツイート –