如何设计10位数的用户ID生成规则?不是顺序递增,而是趋势递增的那种。

如何设计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