私は多少のテーブル(〜2000万行)を持っており、bit
の情報をさらにdatetime2
で保存する必要があります。私は常にbit
の情報だけを照会し、bit
の情報が1の場合、常にdatetime2
の情報があることを知っています。私はこれを実現するための二つの方法を検討している:datetime2とbit + datetime2の格納と索引付け
a)のインデックスはのみEnabled
create table Items (
Enabled bit not null,
EnabledWhen datetime2 null
)
b)のインデックスが含まれますのみEnabled
が含まれているだろうが、クエリは常にEnabled is null
またはEnabled is not null
create table Items (
Enabled datetime2 null
)
のいずれかになります
より効率的なバージョンは何ですか?
Eric Lippertは、[あなたの馬の競走](https://ericlippert.com/2012/12/17/performance-rant/) –
と言いますが、私が言うように、実際のパフォーマンスの問題を実演していない限り、または計算することができます。 'Enabled'が他のカラムの' null'/'not null'の性質を常に論理的にたどる場合は、問題を実証するまでその値を使用してください。次に、あなた自身がデータを保持するのではなく、計算されたデータを保持することができるかどうかを検討します(例えば、永続的な計算カラム、おそらく?)、データが一貫しているかどうかを確認する必要はありません*。 –
'bit'は、選択性が低いため、インデックスの選択肢が非常に悪いです。このようなインデックスは、大部分のシナリオでは考慮されないことがほぼ保証されています。 – dean