分区表的查询性能下降?

时间:2014-05-28 05:57:58

标签: sql sql-server sql-server-2008 tsql sql-server-2012

我正在阅读有关分区表的文章,并对它是否是恩惠或祸害感到困惑。我知道分区适用于大量数据集。但这是我的困惑: 让我们假设有一个表:

Orders(Orderid,Custid,Orderdate,Shipperid) 

它拥有大量数据;足以证明分区的合理性。在该表的每一列上都有选择的查询;许多查询与其他表连接。 如果我在OrderId的基础上对表进行分区;基于其他列的其他查询会变慢吗? 涉及除OrderId列之外的列的连接查询是否会变慢?

将欣赏任何指导!!感谢

1 个答案:

答案 0 :(得分:1)

想象一下,您有两个具有相同架构和相同数据的表。两者都集中在OrderID上。其中一个表也由OrderID分区。有时访问是由OrderID键入的,有时不是。

如果您有足够的数据强制索引BTree中的多个级别,则查找单个OrderID对分区表的速度可能会更快。这是因为每个分区有一个BTree。通常,由于分区消除,一系列OrderID的查找速度会更快 - SQL Server将只访问满足查询所需的那些分区。

其他键上的查找或扫描也不例外。

分区还允许交换和交换整个分区,这可以在每日加载/删除周期中节省数小时。