[转] 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 其他