注册 登录
  • 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 感谢各位客官的到来,小站的已经免费运营了15年头了,如果您觉着好,看着文章写的不错,还请看官给小站打个赏~~~~~~~~~~~~~!

C#根据时间产生有序的GUID编码

OC/C/C++ 水墨上仙 2295次浏览 手机上查看

很多人喜欢用GUID作为数据表的主键,如果使用无序的GUID,当数据量很大的时候,插入性能会急剧下降,如果非要使用GUID,则可以实用有序的GUID,这样性能的影响会比较小。

public static Guid GenerateGuid()
{
    byte[] guidArray = Guid.NewGuid().ToByteArray();
    var baseDate = new DateTime(1900, 1, 1);
    DateTime now = DateTime.Now;
    var days = new TimeSpan(now.Ticks - baseDate.Ticks);
    TimeSpan msecs = now.TimeOfDay;
    byte[] daysArray = BitConverter.GetBytes(days.Days);
    byte[] msecsArray = BitConverter.GetBytes((long)(msecs.TotalMilliseconds / 3.333333));
    Array.Reverse(daysArray);
    Array.Reverse(msecsArray);
    Array.Copy(daysArray,daysArray.Length - 2,guidArray,guidArray.Length - 6,2);
    Array.Copy(msecsArray,msecsArray.Length - 4,guidArray,guidArray.Length - 4,4);
    return new Guid(guidArray);
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C#根据时间产生有序的GUID编码
喜欢 (0)
[]
分享 (0)
水墨上仙
关于作者:
水墨上仙
加载中……