如何设计10位数的用户ID生成规则?新浪微博、百姓网、快手之类的用户ID。
需要达到的效果
1、不是顺序递增,比如 1000000001、1000000002、1000000003
2、是趋势递增,比如 1536745671、1536747675、1536869643,也就是对于某个ID区间,只使用一部分,比如使用率为 60%
数据库是mysql,恳请高手提供思路。
使用序列
-- Create sequence
create sequence 序列名
minvalue 1
maxvalue 9999999999999999999999999999
start with 221
increment by 1
cache 20;
create function [dbo].[GenerateID]()
returns varchar(20)
as
begin
declare @NewID varchar(20);
declare @PresentID varchar(20);
declare @MaxID int;
set @PresentID=isnull((select max(id) from Product),'0000000000')
set @MaxID=convert(int,@PresentID);
if(@MaxID=0)
set @NewID='0000000001';
else
set @NewID=replace(@PresentID,@MaxID,@MaxID+1)
set @NewID=Substring(@NewID,{fn Length(@NewID)}-9,10)
return @NewID
end
1