好的,所以我一直在研究一個項目,我需要創建一個sql'寬表'或一個可以處理超過+1000列數據的sql表。要建立一個例子,讓我們說,出1502列在一排:SQL - 稀疏表,總大小和單元格空間
- 1列專用於「ID INT PRIMARY KEY」
- 5列使用專用於文件信息「FileInfo_1 VARCHAR(20)稀疏,...「
- 1495列是專爲使用帶有小數存儲號碼‘number_info_1 實稀疏,...’
- 最後一列包含使用列集信息」 columnSet XML COLUMN_SET FOR ALL_SPARSE_COLUMNS「
當我在我的
INSERT Test_table(ID, FileInfo_1, FileInfo_2, ...) VALUE(0, 'string1', 'string2', ..., 0.1234, 1.2345, ...)
SQL運行測試字符串我碰上問題是的行最大空間量超出了8060字節限制。但是,鑑於我有什麼,不應該總空間低於8060?由於int需要4個字節,所以5個varchar(20)單元應該佔用100個字節(或者10個字節,我不太確定),而1495個實際單元應該佔用5980個字節,全部小於8060.
我做了一些測試,每個實際單元使用了多少數據,對於每個刪除的實際單元,我都返回了8個字節。這對我來說沒有意義,因爲它應該只有4個字節,是正確的?
任何人都可以提供一些見解,爲什麼發生這種情況?我是新來的,我不確定爲什麼真正的單元格需要8個字節,而不是4個。
MySQL和SQL Server是不同的產品。稀疏列是一個你問關於MySQL或SQL Server? –
我要求一個SQL Server,一個Windows Server 2008 R2標準是特定的,在本地機器上運行。 – MMan
當你*不打算填滿它們時,稀疏列是有意義的。如果您只存儲每次100個實際值,則可以有數千個列。這些值存儲在columnset字段中,該字段佔用的空間比各個列所需的空間要多。如果爲每行填充大量列,則稀疏列不起作用。 –