2011-12-29 298 views
7

如果只考慮兩個可能的值,0 & 1或真&假,這是很明顯的是,BIT(1)做一個更好的工作:爲什麼MySQL將布爾值解釋爲TINYINT(1)而不是BIT(1)?

  • 位(1)軍隊只有2個可能的值:0和1 ,而TINYINT(1)可以接受任何小於10(0,1,2,3,4,5 ....)的可能不明確的整數值。
  • 多比特(1),這樣他們需要比多重TINYINT更少的空間列可以合併爲字節(1)的列做。

那麼爲什麼MySQL將布爾值解釋爲TINYINT(1),而不是BIT(1)?在處理布爾值時使用TINYINT(1)而不是BIT(1)有什麼優勢?

回答

5

這取決於版本和數據庫引擎和驅動程序

  • 位與MyISAM和InnoDB
  • 一些JDBC驅動程序需要被告知這個(如電熱水壺的捆綁驅動程序)
適當支持5.05+

但是BIT優選當然TINYINT。
這只是傳統和慣性,保持TINYINT ...

+0

+1慣性。在幾乎所有情況下,我仍然使用'TINYINT(1)',因爲沒有理由。 – 2011-12-29 17:53:07

+0

+1也表示慣性。我仍然使用TINYINT(1),因爲我最喜歡的SQL編輯器不允許將BIT數據編輯爲像TINYINT一樣簡單,並且在某些情況下可以節省大量時間。 – Donatello 2014-01-27 14:23:32

相關問題