加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLSERVER2005分区表讨论

发布时间:2020-12-12 15:43:06 所属栏目:MsSql教程 来源:网络整理
导读:表分区的问题讨论: 1、当表存在大量数据时,即使指定分区查询 select? top 10 *?? from??LargeTable?? where? $PARTITION.[PartitionFunction]([SplitDate])=22 速度还是很慢。 ? 2、分区键必须是聚聚索引的一部分,不利于表优化。而且修改分区方案很麻烦。

表分区的问题讨论:
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可以考虑用分区。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读