SQLSERVER2005分区表讨论

本文探讨了表分区在SQL Server 2005中的局限性,包括查询速度慢、分区键限制及多表关联查询等问题,并提出外部月档表的替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表分区的问题讨论:
1、当表存在大量数据时,即使指定分区查询
select  top 10 *   from  LargeTable   where  $PARTITION.[PartitionFunction]([SplitDate])=22

速度还是很慢。

 

2、分区键必须是聚聚索引的一部分,不利于表优化。而且修改分区方案很麻烦。

 

3、除非在SQL中指定分区关键字段值,否则查询效果不佳,而分区关键词又必须是聚集索引的一部分。其实就算没有分区,
只要是聚集索引的字段,进行条件查询,本身就很快。由于这个限制,如果进行多表关联查询,查询条件一旦复杂,查询分区器是
无法内部自动判断仅使用某个表分区,这样很可以造成大表的扫描,速度很慢。就算在SQL中指定了表分区,如where  $PARTITION.[PartitionFunction]([SplitDate])=22  (22表示内部分区号)
,速度还是很慢,感觉好像内部查询无法定位到改分区。听说在SQLSERVER2008中要改进分区查询的性能。

 

4、主从表的left join查询,往往查询条件只有主表的日期字段,数据库表分区难以根据20为日期型主表ID,自动判断对应的分区。


居于以上原因:如果是SQLSERVER2005,还是觉得对大表的处理,采用外部月档表的方式存储性能比较好,不依赖数据库的内部分区功能。如果是SQLSERVER2008可以考虑用分区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值