zoukankan      html  css  js  c++  java
  • 创建聚集索引、非聚集索引、唯一索引、唯一键约束

     分析表的索引建立情况:DBCC showcontig('Table') 

     执行重建索引命令:DBCC DBREINDEX('T_CEmployeeRegisterHoliday')

    1、没有聚集索引查询

    2、有聚集索引查询

    3、没有非聚集索引查询

    4、有非聚集索引查询

    5、查询表索引语句

    EXEC sp_helpindex A

    6、删除索引语句
    DROP index t_PortApply.PK_A1

    7、除主键约束(聚集索引)语句
    alter   table  A drop   constraint  PK_A1

    8、显示执行时间

     declare @d datetime
     set @d=getdate() 

        select * from   @tmpTable
     select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate()) 

    9、由于一个表只能有一个聚集索引,并且如果该表设置了主键,默认主键就是聚集索引。但由于主键列在查询条件中并没有频繁作为查询条件使用,这时候在主键上建立聚集索引就太浪费资源了,这种情况下我们可以删除主键约束,给主键建立唯一约束,保证主键列值没有重复值,删除主键约束后就可以在其他列上建立聚集索引。

    10、如果表中已经建立了其他列为聚集索引,再在一个列上面创建主键时,这时候主键列只能是非聚集索引。

    11、建立唯一键约束(默认非聚集索引,实际上唯一键约束是用唯一索引来约束的)两者的功能是一样的

        alter TABLE 表名 add  constraint   索引名称 unique(需要创建的列)

       ALTER TABLE AA add CONSTRAINT [IX_name] UNIQUE NONCLUSTERED([name] ASC) 

    12、创建唯一索引( 唯一键 比 唯一索引 多了一种叫做 "unique key" 的约束)

       例句:CREATE unique index ix_RowID  on T_CEmployeeRegisterHoliday(RowID)

       例句:CREATE UNIQUE NONCLUSTERED INDEX [IX_UniqueIndex_name] ON [dbo].[TableUniqueIndex]([name] ASC)  

       a、不管是建立唯一索引还是唯一约束,被创建的列都不允许有重复数据,重复的NULL值也不可以

       b、创建唯一键约束,同时创建同名的唯一非聚集索引, 同时创建同名统计信息; 唯一键约束靠唯一索引来约束。

      

         c、唯一键约束的索引不能像正常的索引使用太多的索引参数,因为唯一键约束与其索引同在。而单独创建的唯一索引可以设置更多的参数

         d、那么我们在创建列的唯一性时,到底使用哪一种较好呢?(个人建议)

            唯一键约束在表中是必定存在的约束的,唯一键约束的索引存在于一个分区中,并且不会像索引那样可以更改。因为索引可以随时改动(当然也不会经常改动),索引 个人建议还是用唯一索引更灵活。管理约束还得管理索引,而管理索引,一个就好了。但是对于一些高可用性,也要注意索引是否在其他地方也存在。

           也可以这么理解,如果只是单独给一列检查唯一性,两者都可以,如果需要给2列或者更多列检查唯一性,则就用唯一索引。

    13、创建索引的标准:用于频繁搜索的列;用于对数据进行排序的列

    14、创建索引时如果不加索引关键字,默认就是创建非聚集索引(创建索引关键字[ UNIQUE ]唯一索引 [ CLUSTERED]聚集索引[NONCLUSTERED ] 非聚集索引)

  • 相关阅读:
    [转] ORACLE 错误编号表一
    基于CkEditor实现.net在线开发之路(1)
    跨行清算系统的实现原理
    应用程序域
    支付机构客户备付金存管办法
    数据库培训二期试题
    MYSQL开发规范
    详解线上线下收单业务(一)第三方支付
    Solr安装配置说明
    进程(Process)
  • 原文地址:https://www.cnblogs.com/starts/p/5265546.html
Copyright © 2011-2022 走看看