在SQLServer上使用存储过程进行简单分表的方法

在SQLServer上使用存储过程进行简单分表的方法

当数据量巨大的时候,通过分表策略可以让数据量级降下来,从而提高数据库的性能。

这里介绍一种简单的分表方法:

  1. 用存储过程进行分表路由
  2. 用MD5的最后一位进行分表,分成16个表

取到分表路由的Key:

  declare @ch char(1); -- MD5最后一位,0-F,大写的
  declare @s varchar(64); -- MD5的值
  select @s=sys.fn_sqlvarbasetostr(HashBytes('MD5',@p_userkey))
  select @ch = substring(@p_userkey, LEN(@p_userkey), 1); -- 取最后一位

进行表路由,并返回查询结果:

  declare @sql varchar(2048);
  select @sql = 'select userdata from userad_'+@ch;
  exec(@sql);

同理,插入与更新也一样。

记得,需要提前创建好userad_0, userad_1, ..., usead_F。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值