sql - SQL Server 是否可以进行列分区

标签 sql sql-server sql-server-2008 sql-server-2008-r2

表每条记录的大小是一个性能参数。这意味着如果记录大小很小,SQL Server 会在每次读取时从物理硬盘获取更多记录。

在大多数查询中,我们不会使用表的所有列,并且可能仅在特定查询中使用某些列。我们是否可以对每个表的列进行分区以获得更好的性能。

我使用 SQL Server 2008 R2。

谢谢。

最佳答案

真正的列级分区带有面向列的存储,请参阅Inside the SQL Server 2012 Columnstore Indexes ,但这仅在 SQL Server 2012 中可用,并且解决特定的 BI 工作负载,而不是一般的 SQL Server 应用程序。

在面向行的存储中,垂直分区实际上是设计适当的覆盖索引的另一个名称。如果引擎有替代的窄索引,它会在可能的情况下使用它而不是基表。

最后一种选择,手动固定表格并在查询中连接垂直“分片”(或定义连接 View ,同样的事情)通常是不明智的,而且很少有返回。

关于sql - SQL Server 是否可以进行列分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10931731/

相关文章:

sql-server - 为什么一个 SQL 查询返回的结果与使用始终为 true 的过滤器的 SQL 查询返回的结果不同?

c# - 返回受 SQL UPDATE 语句影响的行

MySQL 在所有带前缀的数据库表中创建 View

mysql - 如果存在则更新否则插入mysql

mysql - SQL:如何查找特定值的最大数量的行

c# - 用测试数据填充 SQL Server 表

sql - 不使用任何聚合函数计算行数

sql - 使用映射表动态更改列名

mysql - 为什么 DATE_FORMAT 看起来不像

javascript - 如何在 Azure 存储过程中使用 SQL 中的变量