表分区的问题讨论: 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可以考虑用分区。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|