WEB开发网
开发学院数据库MSSQL Server SQL Server 2005 中的分区表和索引 阅读

SQL Server 2005 中的分区表和索引

 2007-05-17 09:37:24 来源:WEB开发网   
核心提示: 对 SQL Server 7.0 之前的版本中的对象进行分区在 SQL Server 6.5 及以前的版本中,分区只能通过设计来完成,SQL Server 2005 中的分区表和索引(3),还必须内置到所有数据访问编码和查询方法中,通过创建多个表,通过受信任的约束,SQL Server 可

对 SQL Server 7.0 之前的版本中的对象进行分区

在 SQL Server 6.5 及以前的版本中,分区只能通过设计来完成,还必须内置到所有数据访问编码和查询方法中。通过创建多个表,然后通过存储过程、视图或客户端应用程序管理对正确表的访问,通常可以改善某些操作的性能,但代价是增加了设计的复杂性。每个用户和开发人员都必须知道(并正确引用)正确的表。单独创建和管理每个分区,而使用视图来简化访问;但是这种解决方案对性能并没有太大的改善。使用联合视图简化用户和应用程序访问时,查询处理器必须访问每个基础表才能确定结果集所需的数据。如果只需要基础表的有限子集,则每个用户和开发人员都必须了解此设计,以便只引用相应的表。

SQL Server 7.0 中的分区视图

在 SQL Server 7.0 之前的版本中,手动创建分区所面临的挑战主要与性能有关。尽管视图可以简化应用程序设计、用户访问和查询的编写,但却无法改善性能。而在 SQL Server 7.0 版本中,视图结合了约束,允许查询优化程序从查询计划中删除不相关的表(即分区消除),大大降低了联合视图访问多个表时的总计划成本。

请参见图 1 中的 YearlySales 视图。您可以定义十二个单独的表(如 SalesJanuary2003、SalesFebruary2003 等),然后定义每个季度的视图以及全年的视图 YearlySales,而不是将所有销售数据放到一个大型表中。

图 1:SQL Server 7.0/2000 中的分区视图

使用以下查询访问 YearlySales 视图的用户只会被引导至 SalesJanuary2003 表。

SELECT ys.*
FROM dbo.YearlySales AS ys
WHERE ys.SalesDate = '20030113'

只要约束可信并且访问视图的查询使用 WHERE 子句根据分区键(定义约束的列)限制查询结果,SQL Server 就会只访问必需的基础表。受信任的约束是指 SQL Server 能够确保所有数据符合该约束所定义的属性的约束。创建约束时,默认行为是创建约束 WITH CHECK。此设置将导致对表执行架构锁定,以便根据约束验证数据。如果验证结果表明现有数据有效,则添加约束;一旦解除架构锁定,后续的插入、更新和删除操作都必须符合正在应用的约束。通过使用此过程创建受信任的约束,开发人员无需直接访问(甚至不需要知道)他们感兴趣的表,从而大大降低了使用视图的设计的复杂性。通过受信任的约束,SQL Server 可以从执行计划中删除不需要的表,从而改善性能。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:SQL Server 分区表

编辑录入:coldstar [复制链接] [打 印]
赞助商链接