簡體   English   中英

使用BIT值將多列合並為一列

[英]Combining multiple columns into one using BIT values

在給定的表中,我有多列帶有“是” /“否”值的列...

Table someTable

 is_shipped (ENUM) 'n','y' DEFAULT n
 is_paid_for (ENUM) 'n','y' DEFAULT n

將上述字段作為BIT(2)列,將兩個字段有效地組合為一個字段,是否是一個更好的主意?

Table someTable
 is_shipped_paid BIT(2)

該位的每個值將決定二進制標志的值在哪里?

'0' = Not Shipped
'1' = Shipped

因此,以上列的值'01'表示該商品未發貨且已付款...等...

有什么想法/評論/批評嗎?

因此,您每行要保存兩個或三個字節,請考慮完全擁有一行至少需要26個字節的存儲空間,並且要使一個表可用,您至少需要10%的可用空間,另外還要有20%的空間才能創建一些索引可訪問的行,則節省不大。

尤其是考慮到通過標准SQL查詢和更新這些字段所帶來的復雜性時。

還要考慮一下,這些天來,您以TB的價格購買磁盤,每GB大約需要$ 150,並且在此處保存了幾個字節,似乎並不值得打擾。

在1980年代,您花了大錢購買了K磁盤,這種優化很常見:大多數大型數據中心都在接下來的30年中試圖解決所引起的問題。

如果您確實需要節省磁盤空間,那么不建議您啟用INNO DB壓縮,然后讓數據庫完成工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM