2014-03-14 57 views
1

我一直認爲bit在像MySQL和MSSQL這樣的數據庫中比smallint快。更好地使用「smallint」或「bit」?

現在,一個同事說,bit不能被索引(我知道)等是更好地利用始終smallint即使值永遠只是01

我認爲只有01smallint指數沒有因少數不同值的任何優勢......

有人可以幫我解決這個問題?

回答

4

你的同事是天真的 - 至少這個陳述是,因爲它確實忽略了眼前的真實問題。

可以對位進行索引,但只有2個值有用的索引的機會接近零,這就是爲什麼在大多數查詢中永遠不會使用它的原因。這不是固有的,而是它只有兩個值。

有趣的是,如果索引是smallint,它仍然只有兩個值。同樣的問題,沒有足夠的選擇性,基本上很可能根本沒有被使用,尤其是沒有其他指標存在。

現在,從邏輯上說,從位開始的下一步並不是小事,而是小小的一半。

位在存儲方面具有優勢。他們只能佔據一個位......如果你有多個:

http://technet.microsoft.com/en-us/library/ms177603.aspx

多達8個存儲在一個字節。

相關問題