首页 新闻 会员 周边 捐助

什么情况下适合表分区?

0
悬赏园豆:20 [已解决问题] 解决于 2013-11-06 17:24

目前有一张表,行数在9千万左右,后续还会有增长,但表只有一个字段,类似于订单号一样的字符窜,而且这个字段是唯一的 字段类型是varchar(16)  

目前一条查询语句 :if exists(select top 1 字段 from 表 where 字段='条件值')  

这个判断在一个批处理中,每次执行批处理都会查询一次,而且这个批处理被调用非常频繁,现在监控到这条语句在查询的时候有时候会很相对慢。

后续我把这个表备份下载到本地,做了表分区,发现在本地测试,指定分区查询和普通条件查询差距很大,指定分区查询会快很多【表已经分好区】 但是用了SQL自带的评估,和正式服务器上的没有做分区的查询评估 发现评估系数 差不多,所以我现在担心 在服务器把这个表做了分区 会不会没有太多提升,因为这个表毕竟只有一个字段 而且还是主键。

在此请教各位大神 能提供一些宝贵的建议,决定最终方案后 若发现有很大提升后,我会写到博客分享给大家。谢谢

失忆的烟的主页 失忆的烟 | 初学一级 | 园豆:8
提问于:2013-11-06 11:50
< >
分享
最佳答案
0

单个字段表还不至于分表吧,我是用分表的场景是根据客户编号,每一千个客户的产品信息分一张表,这样每个产品信息表里面的数据基本都在几百万到上千万不等。 但表的话,肯定会有压力的。

我帮你算了一下 ,你这里9千万的数据量, 如果全部缓存在内存的话为不到1.4G ,所以你可以考虑放在内存里。

效率低下的问题,可能是因为varchar索引的原因,如果订单号是int型是最好的,不过你现在的业务是不会使用int型了。

关注下,同时期待好的解决方案。

 

收获园豆:20
袁家小黑球 | 小虾三级 |园豆:1045 | 2013-11-06 13:20

谢谢,你的回答也值得思考!

失忆的烟 | 园豆:8 (初学一级) | 2013-11-06 14:55
其他回答(1)
0

还没做过 关注一下

Yu | 园豆:12990 (专家六级) | 2013-11-06 14:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册