C#根据时间产生有序的GUID编码
2018-07-20 来源:open-open
很多人喜欢用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); }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
下一篇:C#动态生成水印图片的类
最新资讯
热门推荐