鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ mysql bit 和 tinyint 的區(qū)別及使用場(chǎng)景?

mysql bit 和 tinyint 的區(qū)別及使用場(chǎng)景?

關(guān)于代表數(shù)據(jù)類型或狀態(tài)的字段之前一直用的 tinyint

沒(méi)關(guān)注過(guò)bit類型,查閱資料后,知道bit是存儲(chǔ)二進(jìn)制的,格式: b'0'b'1'
其存儲(chǔ)的單位直接是 bit ,而 tinyint 的最小單位是1字節(jié)。
然而有人說(shuō)文章說(shuō) bit 不支持索引,文章來(lái)源:【MySQL】bit 類型引發(fā)的故事

個(gè)人認(rèn)為:因?yàn)?php 是弱類型的, bit 類型查詢沒(méi)有 tinyint 方便,

據(jù)說(shuō)更適合 java,有知道的麻煩說(shuō)明下原因?以及他們的區(qū)別和使用場(chǎng)景?

回答
編輯回答
朕略萌

tinyint是數(shù)字類型,存儲(chǔ)小數(shù), 一般對(duì)應(yīng)編輯語(yǔ)言里的小字典或枚舉類型. 節(jié)省空間的同時(shí), 避免存入超范圍的值.
bit類似多用于存儲(chǔ)狀態(tài). 如bit(1) 直接對(duì)應(yīng)Java語(yǔ)言的布爾類型true和false. 用做狀態(tài)保存時(shí)一個(gè)字段可以保存多至64個(gè)狀態(tài).
如我開發(fā)的某個(gè)系統(tǒng)需要保存對(duì)用戶發(fā)送短信的狀態(tài),有10幾種不同類型的短信,每種都要標(biāo)記發(fā)過(guò)沒(méi)有, 這時(shí)候用bit類型就很方便,當(dāng)然用int也能實(shí)現(xiàn), 但用bit更符合語(yǔ)義. 查詢或更新某個(gè)狀態(tài)時(shí)按位操作即可.

2017年6月28日 07:47