我在阅读有关分区表的文章时感到困惑,不知道它是好是坏。我确实了解分区适用于大量数据集。但这是我的困惑: 让我们假设有一个表:
Orders(Orderid,Custid,Orderdate,Shipperid)
它有大量的数据;足以证明分区的合理性。对该表的每一列都进行了选择查询;许多查询与其他表连接。 如果我根据 OrderId 对表进行分区;基于其他列的其他查询会变慢吗? 涉及非 OrderId 列的连接查询会变慢吗?
将不胜感激任何指导!!谢谢
最佳答案
假设您有两个具有相同架构和相同数据的表。两者都聚集在 OrderID 上。其中一个表也按 OrderID 分区。有时访问由 OrderID 键控,有时则不是。
如果您有足够的数据来强制索引 BTree 中的多个级别,则针对分区表查找单个 OrderID 可能会更快。这是因为每个分区有一个 BTree。通常,由于分区消除,查找一系列 OrderID 会更快 - SQL Server 将仅访问满足查询所需的那些分区。
对其他键的查找或扫描没有什么不同。
分区还允许换入和换出整个分区,这可以在日常加载/删除周期中节省数小时。
关于sql - 分区表查询性能慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23903809/