0
我有一些有點大表(約2000萬行),並需要存儲bit
信息與附加datetime2
。我知道我總是隻會查詢bit
的信息,而當bit
的信息是1時,總會有datetime2
信息出現。我正在考慮實施這項兩種方式:存儲和索引datetime2 vs位+日期時間2
一)指標將只包含Enabled
create table Items (
Enabled bit not null,
EnabledWhen datetime2 null
)
二)指標將只包含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'性質,那麼直到你證明了一個問題。然後考慮是否可以讓* system *維護這個計算的數據,而不是自己做(例如持久計算的列,也許?),以便*您*不必確保您的數據是*一致的*。 –
由於選擇性低,「bit」對索引的選擇很差。幾乎可以保證在大多數情況下不會考慮這樣的指數。 – dean