日期:2014-05-17  浏览次数:20563 次

分区表之聚集索引的疑问
最近在研究分区表,现要将普通表转换为分区表,但是普通表转换为分区表时需先删掉主键(实则需要删掉聚集索引,因创建主键默认会创建聚集索引),现在的问题是,如果主键的聚集索引被删掉了,虽然对表数据进行了拆分(按日期字段对表进行的拆分),但后期按主键查询记录不是变的更慢了(因为没有聚集索引了)?这么说来我是不是要给主键建立一个非聚集索引? 大家帮我分析一下,这样对表进行分区后,到底是好还是不好啊?希望给点更好的建议,谢谢

------解决方案--------------------
可以将聚集索引修改为:时间字段+原来的主键字段
加按时进分区的唯一约束:原来的主键字段
------解决方案--------------------
分区表主键字段可以不等于分区字段,
建议先建好分区表,然后从原表导入数据即可.
然后原表删除,分区表重命名.

------解决方案--------------------
创建主键时,指定主键为非聚集索引就行了,
还有,分区完成之后,删除主键,分区依然存在,但是这个时候因为你删除了主键(主键同时是聚集索引)导致没有聚集索引,所以查询时无法利用索引导致全表扫描,这个效率是最低的,程序相应的变慢是很正常的
------解决方案--------------------
引用:
Quote: 引用:

创建主键时,指定主键为非聚集索引就行了,
还有,分区完成之后,删除主键,分区依然存在,但是这个时候因为你删除了主键(主键同时是聚集索引)导致没有聚集索引,所以查询时无法利用索引导致全表扫描,这个效率是最低的,程序相应的变慢是很正常的

这个我知道啊,我在讲普通表转换为分区表的时候,就要将主键的聚集索引删掉后才能转换,我现在的问题是,现在主键没有聚集索引了,如何提高它的查询效率~


依然将主键设置为聚集索引,字段为(原主键+新分区用的时间字段)
------解决方案--------------------
也不好,查询时还是需要有时间字段。

为什么不按原来的主键分区?
------解决方案--------------------
1.每个分区的数据量比整个表小很多
2.可以将聚集索引修改为:时间字段+原来的主键字段。就依然有聚集索引了