当前位置: 代码迷 >> SQL >> 测试人员必知必会的SQL学问07
  详细解决方案

测试人员必知必会的SQL学问07

热度:27   发布时间:2016-05-05 12:54:55.0
测试人员必知必会的SQL知识07

我们今天来说一下索引,前面已经说过一点索引了。今天在啰嗦一下了。


索引主要是不读取全表的时候加查询。索引就好比我们书的目录,它能帮助我们快速的找到要找的内容。SQL Server中主要分为两种:聚集索引和非聚集索引。聚集索引主要特点就是调整索引表顺序的同时也会调整原表的顺序。当创建主键时自动创建聚集索引。一个表只能有一个主键,同样一个表也只能有一个聚集索引。一个聚集索引表最多有16列。非聚集索引就是调整表索引表的同时不会改变原表的顺序。当创建唯一约束时自动创建非聚集索引。一个非聚集索引表最多有249列。这个聚集索引就好比我们新华字典的按拼音检索的那个目录,非聚集索引就好比那个按部首检索了。

唯一索引表示表中任何两个记录的索引值都不同的。

USE TestDB;--先建个表CREATE TABLE Book(	bId int NOT NULL IDENTITY(0001,1),	bName char(50),	bPrice real,	bPress char(100));--建立索引CREATE INDEX IN_book ON Book(bId ASC);--ASC是升序--DESC是降序--用两列建立索引CREATE INDEX IN_book1 ON Book(bId ASC,bPrice DESC);--建立聚集索引CREATE CLUSTERED INDEX IN_book2 ON Book(bId DESC);--建立非聚集索引CREATE NONCLUSTERED INDEX IN_book3 	ON Book(bId DESC);--建立唯一索引CREATE UNIQUE INDEX IN_book4	ON Book(bID ASC);--大家看一下这个索引,能不能建立?CREATE INDEX IN_book ON Book(bId,bPrice DESC);--失败了吧,因为我们前面建过一个名为IN_book的索引了--如果我们想要建一个索引,如果存在就删除它,建立新的,该怎么办呢?CREATE INDEX IN_book ON Book(bId,bPrice DESC)	WITH DROP_EXISTING; --修改索引--禁用IN_book索引ALTER INDEX IN_book	ON Book DISABLE;--启用索引ALTER INDEX IN_book	ON Book REBUILD;--删除索引DROP INDEX Book.IN_book2;




  相关解决方案