我想知道是否有人在 sql server 2005 中遇到了实际的最大表分区数。我知道文档声明每个表有 1000 个分区的限制,但我很难相信,没有大量的黑客攻击和捣乱,1000个分区将是所有可用的。
任何帮助表示赞赏。
韦恩·E·普费弗
我想知道是否有人在 sql server 2005 中遇到了实际的最大表分区数。我知道文档声明每个表有 1000 个分区的限制,但我很难相信,没有大量的黑客攻击和捣乱,1000个分区将是所有可用的。
任何帮助表示赞赏。
韦恩·E·普费弗
以另一种方式开始 - 通过询问 2 个分区是否太多。您想知道您的查询是否会进行分区消除。SQL Server 2005 的分区消除性能不太好,如果您没有将分区字段作为 WHERE 子句的一部分,SQL Server 通常会扫描每个分区。例如,如果我在 CustomerID 上对 SalesDetail 表进行了分区,则可能不会进行分区消除:
SELECT *
FROM dbo.SalesReps sr
INNER JOIN dbo.Customers c ON sr.SalesRepID = c.SalesRepID
INNER JOIN dbo.Sales s ON c.CustomerID = s.CustomerID
WHERE sr.SalesRepID = 10
即使 SalesRep 10 只有几个客户,引擎也不够智能,无法先构建匹配客户列表,然后只查询这些客户的销售分区。它会击中每个分区。因此,我建议确保您的分区方案完全适用于您的 SELECT 查询,然后如果是这样,请使用它运行。您获得的分区越精炼,您的读取查询在消除分区时运行的速度就越快。
您很可能会为您的操作编写脚本,因此如果您需要 1000 个分区,这不会是管理问题。更多分区 = 更小的分区。因此,如果您拥有大量数据,则拥有更多分区可能会很有用。
但是,当您开始接近这些限制时 - 如列 # 限制或其他与硬件无关的最大值,您可能需要开始重新考虑您的设计。