2016-07-22 80 views
0

我試圖複製salesforce在其數據庫體系結構中所做的事情。基本上,他們有一個具有一千個varchar(max)列的oracle表。他們將所有客戶數據存儲在此表中。我試圖用SQL Server來完成同樣的事情。但是,我只能在SQL服務器中獲得308個varchar(max)字段。我想知道Oracle如何能夠實現1000列限制。我想在SQL Server中做同樣的事情。Oracle如何實現1000列?

+1

SQL Server在非寬表中支持1,024列,在寬表中支持30,000。創建309列時是否收到錯誤消息? –

+0

這聽起來像是一場噩夢! –

+0

@JonathonOgden是的,我收到一個錯誤。我可以成功創建表格,但是當我嘗試插入數據時出現錯誤。 '不能創建一個大於允許的最大行大小8060的大小爲8164的行。「# – Luke101

回答

1

A VARCHAR(MAX)字段可以容納GB的信息...但最大行大小是8060字節,那麼這是如何加起來的呢?那麼它不會在行中存儲2GB,它會存儲一個24字節的指針。這些指針加起來超出你的行大小限制。

您可以將表分成多列,列數更少,但我認爲沒有辦法來覆蓋此限制。

1

恕我直言,千列似乎比它的價值更麻煩。也許你可以採取更加規範的方法。

例如,我有一個鏈接到擴展屬性表的對象定義表。 XP表格鏈接到OD,並具有XP-ITEM,XP-VALUE,XP-LM-UTC和XP-LM-Usr字段。這種結構允許任何對象具有任意數量的擴展屬性......標準和/或非標準。

下圖可能會給你一個更好的可視化。

enter image description here

只是一對夫婦的說明:

1)這是不適合大容量的事務數據,即每日貸款餘額

2)每個物品ID可以鏈接回到一個對象,該對象有它自己的屬性,如選擇列表,Excel格式等​​

3)曾經可以看到編輯的全部歷史(誰,什麼,什麼時候)