当前位置:Gxlcms > 数据库问题 > [转] SQL Server 数据库性能优化

[转] SQL Server 数据库性能优化

时间:2021-07-01 10:21:17 帮助过:17人阅读

= CAST(CAST(NEWID() AS BINARY(10))+ CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER) (2)实现COMB数据的C#方式: ///<summary> /// 返回 GUID 用于数据库操作,特定的时间代码可以提高检索效率 /// </summary> /// <returns>COMB (GUID 与时间混合型) 类型 GUID 数据</returns> public static Guid NewComb() { byte[] guidArray = System.Guid.NewGuid().ToByteArray(); DateTime baseDate = new DateTime(1900,1,1); DateTime now = DateTime.Now; // Get the days and milliseconds which will be used to build the byte string TimeSpan days = new TimeSpan(now.Ticks - baseDate.Ticks); TimeSpan msecs = new TimeSpan(now.Ticks - (new DateTime(now.Year, now.Month, now.Day).Ticks)); // Convert to a byte array // Note that SQL Server is accurate to 1/300th of a millisecond so we divide by 3.333333 byte[] daysArray = BitConverter.GetBytes(days.Days); byte[] msecsArray = BitConverter.GetBytes((long)(msecs.TotalMilliseconds/3.333333)); // Reverse the bytes to match SQL Servers ordering Array.Reverse(daysArray); Array.Reverse(msecsArray); // Copy the bytes into the guid Array.Copy(daysArray, daysArray.Length - 2, guidArray, guidArray.Length - 6, 2); Array.Copy(msecsArray, msecsArray.Length - 4, guidArray, guidArray.Length - 4, 4); return new System.Guid(guidArray); } /// <summary> /// 从 SQL SERVER 返回的 GUID 中生成时间信息 /// </summary> /// <param name="guid">包含时间信息的 COMB </param> /// <returns>时间</returns> public static DateTime GetDateFromComb(System.Guid guid) { DateTime baseDate = new DateTime(1900,1,1); byte[] daysArray = new byte[4]; byte[] msecsArray = new byte[4]; byte[] guidArray = guid.ToByteArray(); // Copy the date parts of the guid to the respective byte arrays. Array.Copy(guidArray, guidArray.Length - 6, daysArray, 2, 2); Array.Copy(guidArray, guidArray.Length - 4, msecsArray, 0, 4); // Reverse the arrays to put them into the appropriate order Array.Reverse(daysArray); Array.Reverse(msecsArray); // Convert the bytes to ints int days = BitConverter.ToInt32(daysArray, 0); int msecs = BitConverter.ToInt32(msecsArray, 0); DateTime date = baseDate.AddDays(days); date = date.AddMilliseconds(msecs * 3.333333); return date; }

 

转自:http://www.cnblogs.com/sydeveloper/archive/2013/04/03/2992881.html

[转] SQL Server 数据库性能优化

标签:数据库操作   表示   范围   sub   分享   ntp   tab   copy   其他   

人气教程排行