sql - 分区表查询性能慢?

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

我在阅读有关分区表的文章时感到困惑,不知道它是好是坏。我确实了解分区适用于大量数据集。但这是我的困惑: 让我们假设有一个表:

Orders(Orderid,Custid,Orderdate,Shipperid) 

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

将不胜感激任何指导!!谢谢

最佳答案

假设您有两个具有相同架构和相同数据的表。两者都聚集在 OrderID 上。其中一个表也按 OrderID 分区。有时访问由 OrderID 键控,有时则不是。

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

对其他键的查找或扫描没有什么不同。

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

关于sql - 分区表查询性能慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23903809/

相关文章:

sql - 调整 SQL 选择

mysql - 根据其他表 MySQL 中链接到它的内容选择行

mysql - 连接Mysql中的字段

c# - 多次使用 Include() 时 Entity Framework 代码很慢

SQL Server - 查找不删除临时表的 SP

sql - 如何选择列值不不同的每一行

sql-server - 运行更新查询时出现 "Subquery returned more than 1 value"错误

sql - 如何在带有 JOIN 的查询中使用 WITH (NOLOCK)

java - 在Java中对SQL查询结果进行排序

sql - MySql 查询同一张表以收集最新和年初至今的信息