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

分区表的效率问题
我有一张用户信息表,每个用户都对应若干行(几十行到几万行)记录,类似这样
type user
1 a
7 a
4 a
3 b
5 b
5 d
7 d
22 a
9 f
3 f
11 f
55 a
8 a
14 f
99 f

现在有这样的需求:大量用户会同时操作这张表,频繁的删除和插入行,之后还有频繁的查询操作,怎样提高效率?我的想法是按照用户名建立分区表,但是用户量很大的话会分出几十万个区,会不会又影响了效率?(我能保证用户名不会重复,而且每个用户只能操作他所对应的记录)

------解决方案--------------------
没用过分区。据说sql 05 分区性能有了很大改善

你这个应该按照时间段来来分, 比如一个月 一季度活一年

也可以按照时间段分表。
------解决方案--------------------
按照用户来分区不现实,首先,就算是2008,也只支持999个分区,2012也就10000个,你这样的话是不可行。你可以考虑像1楼说的,使用或者添加一些具有标识性质的日期段,或者可以用地区来区分用户,以这个来做分区比较实际。同时,做一个程序,把1、2年(具体时间按业务而定)前的数据移到一个只读的表或者只读的库,这样保持数据量尽量少,也是一个可行的方法。
------解决方案--------------------
几万行记录没有必要用到分区表,只要服务器性能不是太差的话,而且只有新增和删除,