zoukankan      html  css  js  c++  java
  • SQL Server 的 主键 解决方案 NEWID() , 自增ID

    在 SQL Server 表的主键有自增Id ,和  GUID。

      1.  自增Id

        优点:索引空间小,索引连续。在大量数据插入的时候性能有特别大的优势。

        缺点:可移植性差,在数据迁移的时候。

      2. GUID

        优点:数据迁移的时候很容易。

        缺点:索引占用空间大,因为GUID的随机性,在插入数据的时候会导致索引上的页争用。

    SQL SERVER 2005新加了 NEWSEQUENTIALID(),这是个内置函数,不能用与 SELECT 

    -- 创建的表加约束 default newsequentialid()
    create table #t
    (
        id uniqueidentifier not null  default newsequentialid()
        ,name varchar(100)
    )
    go
    
    --插入表100条数据,并且要指定列名
    insert into #t(name) values('a')
    go 100
    
    select * from #t

    查询结果:

        

    如果这个表的值要被其他表作为外键使用,获得这个值有两中方法:

      1、SQL Server 2005添加的新特性 OUTPUT

    insert into #t(name) 
    output inserted.id 
    values('a')

      2、也可以像插入自增Id一样,获取当前最大的值,

        MSDN对NEWSEQUENTIALID()解释:在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID。

    insert into #t(name) values('a')
    select max(id) from #t

     https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2005/ms189786(v=sql.90)

  • 相关阅读:
    [oracle 使用(1)] win7/10 下Oracle10g的安装与卸载
    [原创]利用爬虫技术获取网页数据,以及想要的指定数据
    [mysql使用(1)] 64位Linux下安装mysql-5.7.13-linux-glibc2.5-x86_64
    aop 常见的问题
    Git技巧:右键菜单怎么去除?
    jrebel激活
    python与mysql连接
    linux下mysql的安装
    Linux下jdk和tomcat安装
    Lotto
  • 原文地址:https://www.cnblogs.com/wangzhanbo/p/8807125.html
Copyright © 2011-2022 走看看