哈希256规则分表

7 篇文章 0 订阅

代码有点老,且没优化,贴下仅供参考:

declare @i int, @j int, @str Nvarchar(max),@temp nvarchar(10), @tempreg nvarchar(10)
set @i=0
set @j=0
set @str =''
set @temp=''
set @tempreg=''

while @i<=15
begin
	
	set @temp= case @i when 10 then 'a' when 11 then 'b' when 12 then 'c' 
					when 13 then 'd' when 14 then 'e' when 15 then 'f' 
					else CONVERT(varchar(20), @i) end;

	while @j<=15
	begin
		set @tempreg= case @j when 10 then 'a' when 11 then 'b' when 12 then 'c' 
						when 13 then 'd' when 14 then 'e' when 15 then 'f' 
						else CONVERT(varchar(20), @j) end;

		set @str='CREATE TABLE [dbo].[Student_'+ @temp + @tempreg +'](
			[id] [bigint] IDENTITY(1,1) NOT NULL,
			[name] [nvarchar](10) NULL,
			[age] [tinyint] NULL	 
		) ON [PRIMARY]';
	
		EXEC(@str) --执行

		set @tempreg='' --清空
		set @j=@j+1
	end

	set @j=0 --重置
	set @i=@i+1
	
end

对应c#代码的映射处理:


再看看BitConvert方法

System.BitConverter.ToString(.....


它实现的源代码:可以看这里



对于插入数据的时候,可以通过Guid或者设定一个随机数(区间得看你预估的数据空间了,同时要考虑数据的增长)

private static string GetPre()
        {
            string md = Md5EncryptClassic(Guid.NewGuid().ToString());
            return md.Substring(0, 2).ToLower();
        }

        static void Main(string[] args)
        {
            Console.WriteLine(GetPre());
            Console.WriteLine("按任意键继续...");

            int _key = 0;
            while (true)
            {
                _key = (int)Console.ReadKey(true).Key;
                if (_key == 27)
                    break;
                Console.WriteLine(GetPre());
            }
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值