精华内容
下载资源
问答
  • 2020-10-30 20:49:55

    create unique index new_index2 on 表名 (字段 )

    创建 唯一 索引 索引名称 在哪个表创建索引      《asc  正序     desc 倒序》

    更多相关内容
  • SqlServer创建唯一索引

    2020-09-16 20:52:53
    USE DhwcMain GO IF EXISTS (SELECT name from sys.indexes WHERE name = N'SHENG_IDX') DROP INDEX SHENG_IDX ON dbo.SHENG; GO CREATE UNIQUE INDEX SHENG_IDX ON dbo.SHENG(PROVINCE);...
    USE DhwcMain
    GO
    
    IF EXISTS (SELECT name from sys.indexes  
               WHERE name = N'SHENG_IDX')   
       DROP INDEX SHENG_IDX ON  dbo.SHENG;   
    GO  
    CREATE UNIQUE INDEX SHENG_IDX
       ON dbo.SHENG(PROVINCE);   
    GO  
    
    IF EXISTS (SELECT name from sys.indexes  
               WHERE name = N'SHI_IDX')   
       DROP INDEX SHI_IDX ON SHI;   
    GO  
    CREATE UNIQUE INDEX SHI_IDX
       ON dbo.SHI(CITY);   
    GO  
    
    --SELECT * FROM SHI WHERE CITY IN (
    --SELECT CITY FROM dbo.SHI GROUP BY CITY HAVING COUNT(*)>1)
    
    IF EXISTS (SELECT name from sys.indexes  
               WHERE name = N'XIAN_IDX')   
       DROP INDEX XIAN_IDX ON  dbo.XIAN;   
    GO  
    CREATE UNIQUE INDEX XIAN_IDX
       ON dbo.XIAN(SHIID, AREA);   
    GO  
    
    /*
    --区县的重复值
    SELECT a.* 
    FROM XIAN a LEFT JOIN 
    (
    	SELECT SHIID,AREA FROM XIAN GROUP BY SHIID,AREA HAVING COUNT(*)>1
    ) b ON a.SHIID=b.shiid AND a.AREA=b.area
    WHERE b.SHIID IS NOT null
    ORDER BY a.SHIID, a.AREA
    */

     

    展开全文
  • 使用 SQL Server 创建唯一索引

    千次阅读 2020-07-01 15:43:01
    使用表设计器创建唯一索引 在“对象资源管理器”中,展开包含您要创建唯一索引的表的数据库。 展开“表”文件夹。 右键单击你要创建唯一索引的表,然后选择“设计” 。 在“表设计器” 菜单上,...

     

    使用表设计器创建唯一索引

    1. 在“对象资源管理器”中,展开包含您要创建唯一索引的表的数据库。

    2. 展开 “表” 文件夹。

    3. 右键单击你要创建唯一索引的表,然后选择“设计” 。

    4. 在“表设计器” 菜单上,选择“索引/键” 。

    5. 在“索引/键” 对话框中,单击“添加” 。

    6. 从“选定的主/唯一键或索引” 文本框中选择新索引。

    7. 在主网格中,在“(常规)” 下,选择“类型” ,然后从列表中选择“索引” 。

    8. 选择“列”,然后单击省略号 (…) 。

    9. 在 “索引列” 对话框中的 “列名” 下,选择要编制索引的列。 最多可选择 16 列。 为获得最佳的性能,请只为每个索引选择一列或两列。 对于所选的每一列,指定索引是以升序还是以降序来排列此列的值。

    10. 选择索引的所有列后,单击 “确定” 。

    11. 在主网格中,在“(常规)” 下,选择“是唯一的” ,然后从列表中选择“是” 。

    12. 可选:在主网格中,在 “表设计器” 下,选择 “忽略重复键” ,然后从列表中选择 “是” 。 如果要忽略尝试添加导致唯一索引中有重复键的数据,请这样做。

    13. 单击“关闭” 

     

    展开全文
  • SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这几种约束的创建和使用的方法。 什么是主键? 在数据库中,常常不只是一个表,...
  • SQL Server 创建索引

    2021-03-03 10:44:04
    索引的简介: 索引分为聚集索引和非聚集索引,数据库中的索引类似于一...索引建多了,不利于新增、修改和删除等操作,因为做这些操作时,SQLSERVER 除了要更新数据表本身,还要连带立即更新所有的相关索引,而且...

    索引的简介:

    索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书。

    索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 。

    但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好。索引建少了,用 WHERE 子句找数据效率低,不利于查找数据。索引建多了,不利于新增、修改和删除等操作,因为做这些操作时,SQL SERVER 除了要更新数据表本身,还要连带立即更新所有的相关索引,而且过多的索引也会浪费硬盘空间。

     

    索引的分类:

    索引就类似于中文字典前面的目录,按照拼音或部首都可以很快的定位到所要查找的字。

    唯一索引(UNIQUE):每一行的索引值都是唯一的(创建了唯一约束,系统将自动创建唯一索引)

    主键索引:当创建表时指定的主键列,会自动创建主键索引,并且拥有唯一的特性。

    聚集索引(CLUSTERED):聚集索引就相当于使用字典的拼音查找,因为聚集索引存储记录是物理上连续存在的,即拼音 a 过了后面肯定是 b 一样。

    非聚集索引(NONCLUSTERED):非聚集索引就相当于使用字典的部首查找,非聚集索引是逻辑上的连续,物理存储并不连续。

    PS:聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

     

    什么情况下使用索引:

    SQL Server 创建索引(index)

     

    语法:

    CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
        ON <object> ( column_name [ ASC | DESC ] [ ,...n ] )
        [ WITH <backward_compatible_index_option> [ ,...n ] ]
        [ ON { filegroup_name | "default" } ]
    
    <object> ::=
    {
        [ database_name. [ owner_name ] . | owner_name. ]
        table_or_view_name
    }
    
    <backward_compatible_index_option> ::=
    {
        PAD_INDEX
      | FILLFACTOR = fillfactor
      | SORT_IN_TEMPDB
      | IGNORE_DUP_KEY
      | STATISTICS_NORECOMPUTE
      | DROP_EXISTING
    }

    C#

    参数:

    UNIQUE:为表或视图创建唯一索引。 唯一索引不允许两行具有相同的索引键值。 视图的聚集索引必须唯一。如果要建唯一索引的列有重复值,必须先删除重复值。

    CLUSTERED:表示指定创建的索引为聚集索引。创建索引时,键值的逻辑顺序决定表中对应行的物理顺序。 聚集索引的底层(或称叶级别)包含该表的实际数据行。

    NONCLUSTERED:表示指定创建的索引为非聚集索引。创建一个指定表的逻辑排序的索引。 对于非聚集索引,数据行的物理排序独立于索引排序。

    index_name:表示指定所创建的索引的名称。

    database_name:表示指定的数据库的名称。

    owner_name:表示指定所有者。

    table:表示指定创建索引的表的名称。

    view:表示指定创建索引的视图的名称。

    column:索引所基于的一列或多列。 指定两个或多个列名,可为指定列的组合值创建组合索引。

    [ ASC | DESC]:表示指定特定索引列的升序或降序排序方向。 默认值为 ASC。

    on filegroup_name:为指定文件组创建指定索引。 如果未指定位置且表或视图尚未分区,则索引将与基础表或视图使用相同的文件组。 该文件组必须已存在。

    on default:为默认文件组创建指定索引。

    PAD_INDEX = {ON |OFF }:指定是否索引填充。默认为 OFF。

      ON 通过指定的可用空间的百分比fillfactor应用于索引中间级别页。

      OFF 或 fillfactor 未指定,考虑到中间级页上的键集,将中间级页填充到接近其容量的程度,以留出足够的空间,使之至少能够容纳索引的最大的一行。

      PAD_INDEX 选项只有在指定了 FILLFACTOR 时才有用,因为 PAD_INDEX 使用由 FILLFACTOR 指定的百分比。

    FILLFACTOR = fillfactor:用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor 的值为1到100。

    SORT_IN_TEMPDB = {ON |OFF }:用于指定创建索引时的中间排序结果将存储在 tempdb 数据库中。 默认为 OFF。

      ON 用于生成索引的中间排序结果存储在tempdb。 这可能会降低仅当创建索引所需的时间tempdb位于不同的与用户数据库的磁盘集。 

      OFF 中间排序结果与索引存储在同一数据库中。

    IGNORE_DUP_KEY = {ON |OFF }:指定在插入操作尝试向唯一索引插入重复键值时的错误响应。默认为 OFF。

      ON 向唯一索引插入重复键值时将出现警告消息。 只有违反唯一性约束的行才会失败。

      OFF 向唯一索引插入重复键值时将出现错误消息。 整个 INSERT 操作将被回滚。

    STATISTICS_NORECOMPUTE = {ON |OFF}:用于指定过期的索引统计是否自动重新计算。 默认为 OFF。

      ON 不会自动重新计算过时的统计信息。

      OFF 启用统计信息自动更新功能。

    DROP_EXISTING = {ON |OFF }:表示如果这个索引还在表上就 drop 掉然后在 create 一个新的。 默认为 OFF。

      ON 指定要删除并重新生成现有索引,其必须具有相同名称作为参数 index_name。

      OFF 指定不删除和重新生成现有的索引。 如果指定的索引名称已经存在,SQL Server 将显示一个错误。

    ONLINE = {ON |OFF}:表示建立索引时是否允许正常访问,即是否对表进行锁定。默认为 OFF。

      ON 它将强制表对于一般的访问保持有效,并且不创建任何阻止用户使用索引和/表的锁。

      OFF 对索引操作将对表进行表锁,以便对表进行完全和有效的访问。

    例子:

    创建唯一聚集索引:

    -- 创建唯一聚集索引
    create unique clustered        --表示创建唯一聚集索引
    index UQ_Clu_StuNo        --索引名称
    on Student(S_StuNo)        --数据表名称(建立索引的列名)
    with
    (
        pad_index=on,    --表示使用填充
        fillfactor=50,    --表示填充因子为50%
        ignore_dup_key=on,    --表示向唯一索引插入重复值会忽略重复值
        statistics_norecompute=off    --表示启用统计信息自动更新功能
    )

    C#

    创建唯一非聚集索引:

    -- 创建唯一非聚集索引
    create unique nonclustered        --表示创建唯一非聚集索引
    index UQ_NonClu_StuNo        --索引名称
    on Student(S_StuNo)        --数据表名称(建立索引的列名)
    with
    (
        pad_index=on,    --表示使用填充
        fillfactor=50,    --表示填充因子为50%
        ignore_dup_key=on,    --表示向唯一索引插入重复值会忽略重复值
        statistics_norecompute=off    --表示启用统计信息自动更新功能
    )

    C#

    --创建聚集索引
    create clustered index Clu_Index
    on Student(S_StuNo)
    with (drop_existing=on)
    
    --创建非聚集索引
    create nonclustered index NonClu_Index
    on Student(S_StuNo)
    with (drop_existing=on)
    
    --创建唯一索引
    create unique index NonClu_Index
    on Student(S_StuNo)
    with (drop_existing=on)

    C#

    PS:当 create index 时,如果未指定 clustered 和 nonclustered,那么默认为 nonclustered。

    创建非聚集复合索引:

    --创建非聚集复合索引
    create nonclustered index Index_StuNo_SName
    on Student(S_StuNo,S_Name)
    with(drop_existing=on)

    C#

    --创建非聚集复合索引,未指定默认为非聚集索引
    create index Index_StuNo_SName
    on Student(S_StuNo,S_Name)
    with(drop_existing=on)

    C#

    在 CREATE INDEX 语句中使用 INCLUDE 子句,可以在创建索引时定义包含的非键列(即覆盖索引),其语法结构如下:

    CREATE NONCLUSTERED INDEX 索引名
    ON { 表名| 视图名 } ( 列名 [ ASC | DESC ] [ ,...n ] )
    INCLUDE (<列名1>, <列名2>, [,… n])

    C#

    --创建非聚集覆盖索引
    create nonclustered index NonClu_Index
    on Student(S_StuNo)
    include (S_Name,S_Height)
    with(drop_existing=on)
    
    --创建非聚集覆盖索引,未指定默认为非聚集索引
    create index NonClu_Index
    on Student(S_StuNo)
    include (S_Name,S_Height)
    with(drop_existing=on)

    C#

    PS:聚集索引不能创建包含非键列的索引。

    创建筛选索引:

    --创建非聚集筛选索引
    create nonclustered index Index_StuNo_SName
    on Student(S_StuNo)
    where S_StuNo >= 001 and S_StuNo <= 020
    with(drop_existing=on)
    
    --创建非聚集筛选索引,未指定默认为非聚集索引
    create index Index_StuNo_SName
    on Student(S_StuNo)
    where S_StuNo >= 001 and S_StuNo <= 020
    with(drop_existing=on)

    C#

    修改索引:

    --修改索引语法
    ALTER INDEX { 索引名| ALL }
    ON <表名|视图名>
    { REBUILD  | DISABLE  | REORGANIZE }[ ; ]

    C#

    REBUILD:表示指定重新生成索引。

    DISABLE:表示指定将索引标记为已禁用。

    REORGANIZE:表示指定将重新组织的索引叶级。

    --禁用名为 NonClu_Index 的索引
    alter index NonClu_Index on Student disable

    C#

    删除和查看索引:

    --查看指定表 Student 中的索引
    exec sp_helpindex Student
    
    --删除指定表 Student 中名为 Index_StuNo_SName 的索引
    drop index Student.Index_StuNo_SName
    
    --检查表 Student 中索引 UQ_S_StuNo 的碎片信息
    dbcc showcontig(Student,UQ_S_StuNo)
    
    --整理 Test 数据库中表 Student 的索引 UQ_S_StuNo 的碎片
    dbcc indexdefrag(Test,Student,UQ_S_StuNo)
    
    --更新表 Student 中的全部索引的统计信息
    update statistics Student

    C#

    索引定义原则:

    避免对经常更新的表进行过多的索引,并且索引中的列尽可能少。而对经常用于查询的字段应该创建索引,但要避免添加不必要的字段。

    在条件表达式中经常用到的、不同值较多的列上建立索引,在不同值少的列上不要建立索引。

    在频繁进行排序或分组(即进行 GROUP BY 或 ORDER BY 操作)的列上建立索引,如果待排序的列有多个,可以在这些列上建立组合索引。

    在选择索引键时,尽可能采用小数据类型的列作为键以使每个索引页能容纳尽可能多的索引键和指针,通过这种方式,可使一个查询必需遍历的索引页面降低到最小,此外,尽可能的使用整数做为键值,因为整数的访问速度最快。

    展开全文
  • Sql Server 创建唯一聚集索引典型实现

    千次阅读 2020-03-10 14:41:55
    唯一索引可通过以下方式实现: PRIMARY KEY 或 UNIQUE 约束 在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动对一列或多列创建唯一聚集索引。主键列不允许空值。 在...
  • SQLServer 语句-创建索引

    千次阅读 2019-02-10 15:28:46
    SQLServer 语句-创建索引
  • 同理,SQL Server允许用户在表中创建索引,指定按某列预先排序,从而大大提高查询速度。 • SQL Server中的数据也是按页(4KB)存放 • 索引:是SQL Server编排数据的内部方法。它为SQL Server提供一种方法来编排...
  • 2.创建唯一索引 SQL CREATE UNIQUE INDEX 语法 在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。 3.实例 CREATE INDEX 实例 本例会创建一个简单的索引,名为 “PersonIndex”,在 Person ...
  • This article gives you an overview of Unique Constraints in SQL and also the Unique SQL Server index. Along the way, we will look at the differences between them. 本文为您概述了SQL中的唯一约束以及...
  • SQLServer创建唯一聚集索引

    千次阅读 2018-09-18 17:03:35
    唯一索引可通过以下方式实现: PRIMARY KEY 或 UNIQUE 约束 在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动对一列或多列创建唯一聚集索引。 主键列不允许空值。 在...
  • SQL Server 数据库之索引

    千次阅读 2022-03-20 18:00:13
    MySQL 数据库的索引1.... 创建与删除索引4.1 用 SQL 命令创建索引4.2 用 SSMS 创建索引4.3 用 SQL 命令删除索引4.4 用 SSMS 删除索引5. 修改和查看索引5.1 用 SQL 命令修改索引 1. 索引介绍 视图 的存在简化了
  • SQLServer 创建全文索引(两种方法)

    千次阅读 2020-08-14 23:57:55
    1 全文索引向导添加 (1)选择表格右击-->...(8)创建全文索引成功 2 SQL语句添加 --打开索引支持 execute SP_FULLTEXT_DATABASE 'Enable'; --建立全文目录 execute sp_fulltext_catalog...
  • SQL Server 创建索引(index)

    千次阅读 多人点赞 2019-06-14 18:01:13
    索引的简介: ...索引主要目的是提高了SQLServer系统的性能,加快数据的查询速度与减少系统的响应时间。 但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好。索引建少了,用 WHERE...
  • sqlserver 命令 创建非聚集索引
  • 关于sql server数据库中,创建唯一索引,且允许空值插入的方法 sql server数据库在创建唯一索引时,如果出现某个字段有两个空值时,就会报错;即只允许一行有空值。 解决方法: CREATE UNIQUE INDEX 索引名称 ON ...
  • 使用SQL Serve语句创建索引 实验环境:西游记团队有台装好的SQL Server 数据库服务器...3.基于科目表的科目id创建唯一索引,并查询科目id=1的科目名称。 4.创建视图:包含学生姓名和总成绩,并查询视图。 5.创建统计每
  • 首先说下主键:PRIMARY KEY 约束唯一标识数据库表中的每条记录。唯一性是主键最主要的特性,主键不能有重复值。主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键(可以是多个列为一个主键...
  • SQLServer 语句 创建索引

    千次阅读 2018-11-05 19:25:31
    SQLServer 语句 创建索引
  • SQLServer创建索引的5种方法

    万次阅读 多人点赞 2017-06-27 21:16:02
    前期准备:create table Employee ( ID int not null primary key, Name nvarchar(4), Credit_Card_ID varbinary(max));...go说明:本表上的索引,都会在创建下一个索引前删除。创建聚集索引方法 1、ALTER
  • sqlserver创建视图索引

    2022-01-25 13:02:13
    创建唯一聚集索引后,可以创建更多非聚集索引。 为视图创建唯一聚集索引可以提高查询性能,因为视图在数据库中的存储方式与具有聚集索引的表的存储方式相同。 查询优化器可使用索引视图加快执行查询的速度。 要使...
  • sqlserver索引和主键

    2021-11-18 10:44:50
    1.创建索引时若未指定索引类型则默认为非聚集索引 2.每张表最多可以有249个非聚集索引 3.行的物理位置不按索引的顺序排序 4.只有查询在具有高度选择性的情况下,非聚集索引才有优势 5.一个索引可以多个字段来...
  • 表结构如下面代码创建 代码如下: ...好,我们按着这个思路做下去,先创建唯一索引。 代码如下: CREATE UNIQUE NONCLUSTERED INDEX un_test_tb ON test_tb(Caption) GO 索引创建好了,我们来测试下效果 代码如下: INSE
  • 因为要准备面试了,所以准备了一下,发现有些不熟练了,而且一些操作都需要上网进行 百度 ...创建索引 create unique/CLUSTERED/nonCLUSTERED index pkindex on jerry_boys(name) 删除 索引 drop index pkindex ...
  • SQLServer创建索引视图

    万次阅读 2018-10-25 16:00:54
     为视图创建唯一聚集索引可以提高查询性能,因为视图在数据库中的存储方式与具有聚集索引的表的存储方式相同。 查询优化器可使用索引视图加快执行查询的速度。 要使优化器考虑将该视图作为替换,并不需要在查询中...
  • 创建唯一约束,使用UNIQUE关键字 CREATE TABLE TB101 ( ID INT IDENTITY(1,1) PRIMARY KEY, C1 INT UNIQUE, C2 INT ) UNIQUE 表示:唯一约束 测试: ...创建唯一索引: CREATE UNIQUE INDEX IX_
  • SQLServer索引管理——唯一...当列上创建了唯一约束时,对应的会在该列自动创建唯一索引 为验证这些差异,我们创建一个测试表,创建完成后,使用sp_helpindex查看表的索引情况 CREATE TABLE uniqueTest(id INT N...
  • Sql Server 创建索引 、复合索引

    万次阅读 2017-03-05 17:19:56
    我们在学sqlserver的时候,大多教科书和前辈们都说状态少的字段不要建索引,由此带来的开销还不如不建索引,但是这句话有多少人真的知道, 或者说有多少人真的对此有比较深刻的理解,而不是听别人道听途说。。...
  • SQLServer创建唯一非聚集索引

    千次阅读 2018-09-19 06:54:59
    唯一索引可通过以下方式实现: PRIMARY KEY 或 UNIQUE 约束 在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动对一列或多列创建唯一聚集索引。 主键列不允许空值。 在创建 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 83,351
精华内容 33,340
关键字:

sqlserver创建唯一索引