如题:SQL中identity和CLUSTERED的意思

解决方案 »

  1.   

    联机帮助搜索框中分别搜索 identity和CLUSTERED
      

  2.   

    如题:SQL中identity和CLUSTERED的意思----------
    identity 自动增加CLUSTERED 为族索引,通常定为identity的字段,会用来创建族索引
      

  3.   

    identity明白了,但是我那个设了identity后,好象数据插不进去,是不是给关了,如果是的话,怎么设置打开呢.
    不过那个CLUSTERED还是不太清楚,能举个例子吗
      

  4.   

    create clustered index idxid on 表(id)
      

  5.   

    identity明白了,但是我那个设了identity后,好象数据插不进去,是不是给关了,如果是的话,怎么设置打开呢.
    -------------------------
    如果你设了identity以后,它是自动编号的,不用插入数据了如
    create table t
    (
    id int identity(1,1),
    name varchar(10)
    )insert into t
    select 'zhang' union all
    select 'hong'即可,select * from t时
    就有两条记录,id 为 1,2
      

  6.   

    明白了,谢谢楼上的几位,但是那个clustered还是不懂.
      

  7.   

    clustered就是主键索引,数据按照这个索引排序
      

  8.   

    clustered,簇索引,数据实际存储顺序和簇索引的顺序一致。
    identity列不用手动插入,如果要,设置identity_insert
      

  9.   

    identity是用在使某项不重复的,clustered是用在索引上的
      

  10.   

    clustered指明按照此列构建索引时,记录存储顺序会变,使索引列排序.
    而unclustered就不会,构建索引后记录不变.
      

  11.   

    补充:使用clustered建索引时慢,但以后的检索速度快.
             unclustered构建设索引时快,以后使用时不如clustered的索引速度快.
      

  12.   

    CLUSTERED创建一个对象,其中行的物理排序与索引排序相同,并且聚集索引的最低一级(叶级)包含实际的数据行。一个表或视图只允许同时有一个聚集索引。具有聚集索引的视图称为索引视图。必须先为视图创建唯一聚集索引,然后才能为该视图定义其它索引。在创建任何非聚集索引之前创建聚集索引。创建聚集索引时重建表上现有的非聚集索引。如果没有指定 CLUSTERED,则创建非聚集索引。说明  因为按照定义,聚集索引的叶级与其数据页相同,所以创建聚集索引时使用 ON filegroup 子句实际上会将表从创建该表时所用的文件移到新的文件组中。在特定的文件组上创建表或索引之前,应确认哪些文件组可用并且有足够的空间供索引使用。文件组的大小必须至少是整个表所需空间的 1.2 倍,这一点很重要。
      

  13.   

    在自增列时建  CLUSTERED应注意:
    当有大量的行正在被插入表中时,要避免在本表一个自然增长(例如,identity列)的列上建立镞索引。如果你建立了镞的索引,那么insert的性能就会大大降低。因为每一个插入的行必须到表的最后,表的最后一个数据页
      

  14.   

    不建议在 identity 列上建立 聚集索引
    聚集索引一般是 建立在你最需要查询排序的那几列上
    identity 列 建个非聚集索引就可以了
      

  15.   

        数据量不大 根本用不着这个属性clustered 
      

  16.   

    IDENTITY(函数)
    只用在带有 INTO table 子句的 SELECT 语句中,以将标识列插入到新表中。尽管类似,但是 IDENTITY 函数不是与 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 属性。语法
    IDENTITY ( data_type [ , seed , increment ] ) AS column_name参数
    data_type标识列的数据类型。标识列的有效数据类型可以是任何整数数据类型分类的数据类型(bit 数据类型除外),也可以是 decimal 数据类型。seed要指派给表中第一行的值。给每一个后续行指派下一个标识值,该值等于上一个 IDENTITY 值加上 increment 值。如果既没有指定 seed,也没有指定 increment,那么它们都默认为 1。increment用来添加到 seed 值以获得表中连续行的增量。column_name将插入到新表中的列的名称。 返回类型
    返回与 data_type 相同的类型。注释
    因为该函数在表中创建一个列,所以必须用下列方式中的一种在选择列表中指定该列的名称:--(1)
    SELECT IDENTITY(int, 1,1) AS ID_Num
    INTO NewTable
    FROM OldTable--(2)
    SELECT ID_Num = IDENTITY(int, 1, 1)
    INTO NewTable
    FROM OldTable示例
    下面的示例将来自 pubs 数据库中 employee 表的所有行都插入到名为 employees 的新表。使用 IDENTITY 函数在 employees 表中从 100 而不是 1 开始编标识号。USE pubs
    IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
          WHERE TABLE_NAME = 'employees')
       DROP TABLE employees
    GO
    EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'SELECT emp_id AS emp_num, 
       fname AS first, 
       minit AS middle, 
       lname AS last, 
       IDENTITY(smallint, 100, 1) AS job_num, 
       job_lvl AS job_level, 
       pub_id, 
       hire_date
    INTO employees 
    FROM employee
    GO
    USE pubs
    EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false'具体的你自己去查联机丛书吧