zoukankan      html  css  js  c++  java
  • GUID

    以前数据库的标识列一直都是自己手动编写的,虽然考虑到了很多的因素,但最后还是难以避免出现这样那样的问题,今天看到GUID,作为唯一标识列,它确实是不错的选择,当然了,这个还是要根据业务需求了.

    我先说下什么是GUID

    GUID是由当前网卡id和当前计算机CPU指针时间共同组成的一串字符,该字符有16个字节,任何时间段的两台计算机都无法出现相同的GUID,所以使用GUID来作为唯一标识列,我们就不用担心key重复的问题.

    当然,有人会发现,使用GUID来作为key的话,这样会暂用数据库的内存,是的,相对于自增长列来说,这确实会加大使用数据库的内存,这也是GUID的一个弊端;

    同时,GUID还有一个弊端,也是我个人比较在意的一点,GUID会降低数据库的查询效率,所以我个人建议,使用GUID时,最好配合其他列的索引来使用.以便改善GUID的这一弊端

    上面是它存在的弊端,有人可能会问,既然有这样的弊端为何还要使用GUID呢,自增长列同样可以使用啊.这话相对来说是没有问题的,ok,下面我来解释下GUID的相对优势,GUID的好处在于,第一,使用方便,无论是使用SQL还是T-SQL,GUID的使用方法都比较简单;第二:GUID有预知标识列的功能,有部分业务可能会让我提前得到即将insert到数据库中的唯一标识列.就这一点来说,GUID极大方便的做到了这一点.这也是我使用它的一个重要原因.

    ok,说了这么多了,我们来看看T-SQL中,GUID是如何获取到的吧.CODE也是相当简单

      Guid g = Guid.NewGuid();
     string guid = g.toString();

    简单的两句话便可得到你想要的guid了...例:61995c9e-5fcf-4b2e-acd3-1b16bc83c4bf;是不是有点像注册码?当然了,这个是可以用于注册码的.这里的预知便起到了作用.

    下面我说下SQL中的用法

    CREATE TABLE EXPMONTER
    (
        ExId uniqueidentifier default(NewID()),
        DayTime varchar(15) default(getdate())
    )
    GO

    关键字 UNIQUEIDENTIFIER ,sql中优函数NewID()可以调用GUID,一般不填写时建议采用默认数据.这里就是简单的GUID的使用.后续还会研究其具体做法,还有查询速度等问题.

  • 相关阅读:
    io流
    JDBC-java数据库连接
    list接口、set接口、map接口、异常
    集合、迭代器、增强for
    math类和biginteger类
    基本包装类和System类
    正则表达式
    API-Object-equals方法和toString方法 Strinig字符串和StingBuffer类
    匿名对象 内部类 包 访问修饰符 代码块
    final 和 static 关键词
  • 原文地址:https://www.cnblogs.com/xufei/p/3287049.html
Copyright © 2011-2022 走看看