有一张表
book(图书)
字段名称 类型 备注
id varchar(30) 图书编号(主键)
ISBN varchar(30) ISBN
name varchar(50) 图书名称(不可为空)
kind_num  int           图书类型编号
author varchar(32) 作者
price money         价格
pub varchar(100) 出版社
brief varchar(100) 图书简介SQL SERVER 2008中对ID 默认生成了聚集索引 请问针对这张表还能建立其他的索引嘛? 谢谢了 最好用T-SQL语句写

解决方案 »

  1.   

    当然可以,比如建立一个唯一索引:
    CREATE UNIQUE NONCLUSTERED INDEX IX_book ON dbo.book(name)
    这要看你表的设计.
      

  2.   

    --简单索引
    CREATE INDEX book_name ON book (name)--创建图书名称字段的索引
      

  3.   

    数据库在创建主键同时,会自动建立一个唯一索引。
    如果这个表之前没有聚集索引,同时建立主键时候没有强制指定使用非聚集索引,则建立主键时候,同时建立一个唯一的聚集索引。
    一张数据表只能有一个聚集索引,在MSSQL2005中可以创建249个非聚集索引,在MSSQL2008中可以创建999个聚集索引。
    常用语句:
    --创建聚集索引 
    create clustered index Idx_Area_ID on Company(Area_ID) 
    --创建唯一聚集索引 
    create unique clustered index Idx_Un_Area_ID on Company(Area_ID) 
    --创建非聚集索引 
    create nonclustered index Idx_Area_ID on Company(Area_ID)
     
    对于PRIMARY KEY或者UNIQUE约束字段上的索引,如果是建立该约束时自动创建的索引,则不能显示使用DROP INDEX语句删除,而必须使用ALTER  TABLE  表名  DROP  PRIMAYR KEY名;先删除PRIMARY KEY或者UNIQUE约束,然后该索引会自动删除。
    对于非PRIMARY KEY字段上的索引,不论是聚集还是非聚集,都可以显示使用
    DROP  INDEX  索引名 ON 表名
      

  4.   

    在MSSQL2008中可以创建999个聚集索引。上面这里漏了一个字。
      

  5.   

    --可以用索引覆盖  在经常查询的字段上建立索引
    一些列可以包含在里面create  unique clustered index idx_ISBN on book include(你需要的列名)