可能佔。
陣列儲存在表中的一行是這種形式
rowid | 列1資訊(型別,長度),列1資料 | 列2資訊,列2 資料 | …………
當為null的欄位在一條記錄的最後,就是說他後邊沒有非null的欄位值時,是不佔空間的
當為null的欄位在一條記錄的中間,就是說他後邊還有非null的欄位值時,他佔一個位元組
所以oracle建議在設計表結構時儘量把可空的欄位放到最後!
補充:
對於資料庫中的一條資料,應該算是橫排,
也就是列1都可能為空,那你就在建表的時候儘量把它放到最後一個欄位。
讓資料變成這樣。。
rowid | 列2資訊,列2 資料 | …………| 列1資訊(型別,長度),列1資料
對了,我上面列出來的不是你所看到,而是資料在DB中的實際儲存的結構。
你看到的,應該是:
列1資料 | 列2 資料 | …………
列2 資料 | …………| 列1資料
總結下:null資料它本身不佔空間,但是如果null這個欄位在一行資料的中間時,它需要維護沒行資料的結構統一 ,需要佔用一點空間。
神啊,夠詳細了吧?
可能佔。
陣列儲存在表中的一行是這種形式
rowid | 列1資訊(型別,長度),列1資料 | 列2資訊,列2 資料 | …………
當為null的欄位在一條記錄的最後,就是說他後邊沒有非null的欄位值時,是不佔空間的
當為null的欄位在一條記錄的中間,就是說他後邊還有非null的欄位值時,他佔一個位元組
所以oracle建議在設計表結構時儘量把可空的欄位放到最後!
補充:
對於資料庫中的一條資料,應該算是橫排,
rowid | 列1資訊(型別,長度),列1資料 | 列2資訊,列2 資料 | …………
也就是列1都可能為空,那你就在建表的時候儘量把它放到最後一個欄位。
讓資料變成這樣。。
rowid | 列2資訊,列2 資料 | …………| 列1資訊(型別,長度),列1資料
對了,我上面列出來的不是你所看到,而是資料在DB中的實際儲存的結構。
你看到的,應該是:
列1資料 | 列2 資料 | …………
列2 資料 | …………| 列1資料
總結下:null資料它本身不佔空間,但是如果null這個欄位在一行資料的中間時,它需要維護沒行資料的結構統一 ,需要佔用一點空間。
神啊,夠詳細了吧?