转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
Integer GUID和Comb做主键的效率测试(Delphi+access)(一)         ★★★★

Integer GUID和Comb做主键的效率测试(Delphi+access)(一)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3492 更新时间:2009/4/23 18:25:46
>

      raise Exception.Create(''''Create GUID Err!'''');

   end;

end;

 

class function SSystem.GetCombGUID(guid: TGUID): TGUID;

var

  dtm : TDateTime;

  days,seconds,tmp : longint;//32 bit

begin

   dtm := Now();

   dtm := dtm - spdelib_base_datetime;

   days := trunc(dtm);

   //应该*1000000000(100),但这样会可能发生溢出

   //如果采用int64,则会给下面的移位转换带来麻烦

   //所以这里采用了1000000000(90)

   //这里的算法是采用的是Jimmy Nilsson''''The Const of GUIDs as Primary Keys''''

   //算法,对于实时性要求不太高的系统来说,可以采用3/3,

   //3个字节存放日期,3个字节存放时间,这里是2/4

   seconds := trunc(( dtm - days ) * 1000000000);

 

   //高位在前

   //整数部分(日期部分)

   tmp := days and $FF;

   guid.D4[3] := byte(tmp);

   tmp := (days shr 8);

   guid.D4[2] := byte(tmp);

 

   //小数部分(时间部分)

   tmp := seconds and $FF000000;

   tmp := tmp shr 24;

   guid.D4[4] := byte(tmp);

 

   tmp := seconds and $00FF0000;

   tmp := tmp shr 16;

   guid.D4[5] := byte(tmp);

 

   tmp := seconds and $0000FF00;

   tmp := tmp shr 8;

   guid.D4[6] := byte(tmp);

 

   tmp := seconds and $000000FF;

   guid.D4[7] := byte(tmp);

 

   Result := guid;

end;

 

class function SSystem.GetDateTimeFromCombGuid(guid: TGUID): TDateTime;

var

 days,seconds : longint;//32 bit

begin

  days := guid.D4[2];

  days := days shl 8;

  days := days + guid.D4[3];

  days := days + trunc(spdelib_base_datetime);

 

  seconds := guid.D4[4];

  seconds := seconds shl 8;

  seconds := seconds + guid.D4[5];

  seconds := (seconds shl 8) + guid.D4[6];

  seconds := (seconds shl 8) + guid.D4[7];

  result := seconds / 1000000000;

 

  result :=days + result;

end;

 

class function SSystem.GetGuidString(guid: TGUID; beginSymbol, endSymbol,

  partitionSymbol: string): string;

begin

 

上一页  [1] [2] [3] [4]  下一页


[VB.NET程序]Read a byte, integer or long from memory  [VB.NET程序]源代码推荐:vb的GUID生成算法
[Delphi程序]在Delphi中通过函数获取GUID  [Delphi程序]Integer GUID和Comb做主键的效率测试(Delphi+acce…
[Delphi程序]Integer GUID和Comb做主键的效率测试(Delphi+acce…  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台