id、fieldName、fieldValueの3つのカラムを持つテーブルがあります。この表には多くのレコードがあります。我々はすぐに別個のフィールド名のリストにアクセスしたいと思う。
クラスタ化されたインデックスを持つビューを作成すると、これが発生しますが、別の問題があります。つまり、idカラムでテーブルから削除するプロセスが多数あります。インデックスの更新を試みているため、複数の削除が同時に実行された場合、デッドロックが発生します。
インデックスを持たないビューを作成した場合、デッドロックは発生しませんが、ビューの使用は非常に遅くなります。 すばやく動作し、削除時にロックされないビューを作成する方法はありますか(または別のフィールド名を取得する方法)はありますか?ロックされていないSQLビュー
質問にデータを追加して、提供された提案の一部に答えてください:
新しいfieldNamesを追加することはめったにありません。既存のfieldNamesを削除することはまれです。ほとんどすべての新しいレコードは、既存のfieldNamesを使用します。
フィールド名はほとんど異なりませんが(約30)、テーブルには何億ものレコードがあります。
テーブルのfieldNameにインデックスがありますが、インデックスが作成されていない場合は、個別のfieldNamesのリストを取得するのが非常に遅いです。
は、なぜあなたは、ビューが必要なのですか?選択したプロシージャやストアドプロシージャを実行できませんか? –
インデックス付きビューを設計する際のガイドラインの[インデックス付きビューは、基になるデータが頻繁に更新されない場合に最適です](https://technet.microsoft.com/en-us/library/ms187864%28v=sql.105%29.aspx) 。ですから、私はそれを簡単なビューに切り替えることを検討しなければならないかもしれません。 – shadow