在MS SQL Server中设计、创建和维护索引

 

今天做东西需要先把一个表的索引的唯一性删掉,处理完以后再把唯一性加上,网上找了好多方法,直接删除唯一性是总是不 行的,得把索引和唯一性一起删掉才行。这下总算搞定。下面是转的内容。
 
 

一 索引的作用

在日常生活中我们会经常遇到索引,例如图书目录、词典索引等。
借助索引,人们会很快地找到需要的东西。
索引是数据库随机检索的常用手段,它实际上就是记录的关键字与其相应地址的对应表。
例如,当我们要在本书中查找有关“SQL查询”的内容时,应该先通过目录找到“SQL查询”所对应的页码,然后从该页码中找出所要的信息。这种方法比直接翻阅书的内容要快。
如果把数据库表比作一本书,则表的索引就如书的目录一样,通过索引可大大提高查询速度。
此外,在SQL SERVER中,行的唯一性也是通过建立唯一索引来维护的。 
索引的作用可归纳为:
1. 加快查询速度;
2. 保证行的唯一性。

二 索引的分类

1. 按照索引记录的存放位置可分为聚集索引与非聚集索引
聚集索引:按照索引的字段排列记录,并且依照排好的顺序将记录存储在表中。
非聚集索引:按照索引的字段排列记录,但是排列的结果并不会存储在表中,而是另外存储。
2. 唯一索引的概念
唯一索引表示表中每一个索引值只对应唯一的数据记录,
这与表的PRIMARY KEY的特性类似,因此唯一性索引常用于PRIMARY KEY的字段上,以区别每一笔记录。
当表中有被设置为UNIQUE的字段时,SQL SERVER会自动建立一个非聚集的唯一性索引。
而当表中有PRIMARY KEY的字段时,SQL SERVER会在PRIMARY KEY字段建立一个聚集索引。
3. 复合索引的概念
复合索引是将两个字段或多个字段组合起来建立的索引,而单独的字段允许有重复的值。

三 建立索引

建立索引的语句是CREATE INDEX,其语法格式为:
        CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名> (<列名> [次序] [{,<列名>}] [次序]…)

UNIQUE表明建立唯一索引。
CLUSTER表示建立聚集索引。
次序用来指定索引值的排列顺序,可为ASC(升序)或DESC(降序),缺省值为ASC。
例3.1 为表SC在SNO和CNO上建立唯一索引。
USE STUDENT
CREATE UNIQUE INDEX SCI ON SC(SNO,CNO)
执行此命令后,为SC表建立一个索引名为SCI的唯一索引,
此索引为SNO和CNO两列的复合索引,即对SC表中的行先按SNO的递增顺序索引,对于相同的SNO,又按CNO的递增顺序索引。
由于有UNIQUE的限制,所以该索引在(SNO,CNO)组合列的排序上具有唯一性,不存在重复值。

例3.2 为教师表T在TN上建立聚集索引。
    CREATE CLUSTER INDEX TI ON T(TN)
执行此命令后,为T表建立一个索引名为TI的聚集索引,T表中的记录将按照TN值的升序存放。
注意:
1. 改变表中的数据(如增加或删除记录)时,索引将自动更新。
索引建立后,在查询使用该列时,系统将自动使用索引进行查询。 
2. 索引数目无限制,但索引越多,更新数据的速度越慢。对于仅用
于查询的表可多建索引,对于数据更新频繁的表则应少建索引。
四 删除索引
建立索引是为了提高查询速度,但随着索引的增多,数据更新时,系统会花费许多时间来维护索引。这时,应删除不必要的索引。
删除索引的语句是DROP INDEX,其语法格式为:
            DROP INDEX 数据表名.索引名

例4.1 删除表SC的索引SCI。        
DROP INDEX SC.SCI

posted @ 2012-07-10 10:43  Net-Spider  阅读(388)  评论(0)    收藏  举报