簡體   English   中英

是否可以在SQL Server中進行列分區

[英]Is it possible to column partitioning in SQL Server

表的每個記錄的大小是性能參數。 這意味着如果記錄的大小很小,則SQL Server每次從物理硬盤讀取時都會獲取更多的記錄。

在大多數查詢中,我們不使用表的所有列,而可能僅在特定查詢中使用某些列。 我們對每個表的列進行分區是否可能具有更好的性能。

我使用SQL Server 2008 R2。

謝謝。

真正的列級分區隨附於面向列的存儲,請參閱“ SQL Server 2012列存儲索引內部” ,但這僅在SQL Server 2012中可用,並且可以解決特定的BI工作負載,而不是常規的SQL Server應用程序。

在面向行的存儲中,垂直分區實際上是設計適當的覆蓋索引的另一個名稱。 如果引擎具有替代的窄索引,則在可能的情況下將使用它而不是基表。

最后一種選擇是手動建議將表夾板並在查詢中聯接垂直的“分片”(或定義聯接視圖,同樣的事情),通常是不明智的,而且很少能得到回報。

目前,使用SQL Server 2008時,無法對表進行水平分區。 如果您有大量的列,則需要將其切成共享公共鍵的水平塊表,然后使用可更新的視圖對它們進行換膚,以產生一個非常寬的表的錯覺。

如果只有幾個大列(例如VARCHAR(1000) ),則可以將數據標准化為唯一的值表。

無列分區規則的一個例外是聲明為max的字符列(例如,varchar(max))。

這些存儲在單獨的數據頁上。 我相信除非查詢中引用了該列,否則不會讀入此頁面。 如果我錯了,我相信會有更多的知識人會糾正我。

暫無
暫無

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

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