効率的にインデックスを作成するには、SQL Server 計算列に「永続性」が必要ですか?
Name と LoweredName (計算された) 列の組み合わせです。そのため、MSDN の記事で言及されている精度の問題を扱っているとは思えません。
効率的にインデックスを作成するには、SQL Server 計算列に「永続性」が必要ですか?
Name と LoweredName (計算された) 列の組み合わせです。そのため、MSDN の記事で言及されている精度の問題を扱っているとは思えません。
Mitch が述べたこととは反対に、インデックスを作成するために列を永続化する必要はありません (MSDN の記事では、計算された列がdeterministicでない場合、永続化する前に永続化のマークを付ける必要があると述べられています)。インデックスに含めることを検討してください。
元の質問に関しては、インデックスの効率は他の列と同じくらい良いと思います-効率のためにどのメトリックを使用していますか? 私は確かにそれがより多くのスペースを占めるとは思っていません。INSERT/UPDATE 中に計算のオーバーヘッドが発生しますが、列が永続化されているかどうかに関係なく発生します。
インデックスを介したクエリに関しては、違いはありません。インデックス構造自体は、これが実際の列、永続化された計算列、または永続化されていない計算列のいずれであっても同じように構築されます。
(できれば最終編集) - 計算列を取得している場合、パフォーマンスがわずかに低下する可能性があり、ネットワークのオーバーヘッドやその他の I/O コストなどと比較すると、計算自体が高価です。しかし、小文字に変換する場合、私はそれに気付くことができるとは思っていません。
いいえ。ただし、計算列にインデックスを作成するために満たす必要がある特定の条件があります。BOL - 計算列にインデックスを作成する