我正在阅读有关分区表的文章,并对它是否是恩惠或祸害感到困惑。我知道分区适用于大量数据集。但这是我的困惑: 让我们假设有一个表:
Orders(Orderid,Custid,Orderdate,Shipperid)
它拥有大量数据;足以证明分区的合理性。在该表的每一列上都有选择的查询;许多查询与其他表连接。 如果我在OrderId的基础上对表进行分区;基于其他列的其他查询会变慢吗? 涉及除OrderId列之外的列的连接查询是否会变慢?
将欣赏任何指导!!感谢
答案 0 :(得分:1)
想象一下,您有两个具有相同架构和相同数据的表。两者都集中在OrderID上。其中一个表也由OrderID分区。有时访问是由OrderID键入的,有时不是。
如果您有足够的数据强制索引BTree中的多个级别,则查找单个OrderID对分区表的速度可能会更快。这是因为每个分区有一个BTree。通常,由于分区消除,一系列OrderID的查找速度会更快 - SQL Server将只访问满足查询所需的那些分区。
其他键上的查找或扫描也不例外。
分区还允许交换和交换整个分区,这可以在每日加载/删除周期中节省数小时。