目前有一张表,行数在9千万左右,后续还会有增长,但表只有一个字段,类似于订单号一样的字符窜,而且这个字段是唯一的 字段类型是varchar(16)
目前一条查询语句 :if exists(select top 1 字段 from 表 where 字段='条件值')
这个判断在一个批处理中,每次执行批处理都会查询一次,而且这个批处理被调用非常频繁,现在监控到这条语句在查询的时候有时候会很相对慢。
后续我把这个表备份下载到本地,做了表分区,发现在本地测试,指定分区查询和普通条件查询差距很大,指定分区查询会快很多【表已经分好区】 但是用了SQL自带的评估,和正式服务器上的没有做分区的查询评估 发现评估系数 差不多,所以我现在担心 在服务器把这个表做了分区 会不会没有太多提升,因为这个表毕竟只有一个字段 而且还是主键。
在此请教各位大神 能提供一些宝贵的建议,决定最终方案后 若发现有很大提升后,我会写到博客分享给大家。谢谢
单个字段表还不至于分表吧,我是用分表的场景是根据客户编号,每一千个客户的产品信息分一张表,这样每个产品信息表里面的数据基本都在几百万到上千万不等。 但表的话,肯定会有压力的。
我帮你算了一下 ,你这里9千万的数据量, 如果全部缓存在内存的话为不到1.4G ,所以你可以考虑放在内存里。
效率低下的问题,可能是因为varchar索引的原因,如果订单号是int型是最好的,不过你现在的业务是不会使用int型了。
关注下,同时期待好的解决方案。
谢谢,你的回答也值得思考!
还没做过 关注一下