SQLServer为数据库表创建索引

作者:网络 时间:

语法:

CREATE [索引类型] INDEX 索引名称 ON 表名(列名)

创建索引实例:

  1. 聚集索引 create clustered index index_name on table_name (cloumn_name);
  2. 非聚集索引 create nonclustered index index_name on table_name (cloumn_name);
  3. 唯一索引 create unique index index_name on table_name(cloumn_name)

删除索引方法:

可利用ALTER TABLE或DROP INDEX语句来删除索引。类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。

DROP INDEX index_name ON talbe_name

ALTER TABLE table_name DROP INDEX index_name

ALTER TABLE table_name DROP PRIMARY KEY

其中,前两条语句是等价的,删除掉table_name中的索引index_name。

第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。

总结

  1. 什么是索引

数据库中的索引是某个表中一列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

  1. 分类
  • 唯一索引(UNIQUE)

不允许两行具有相同的索引值(创建了唯一约束,系统将自动创建唯一索引)在表上创建唯一索引。唯一索引是不允许其中任意两行具有相同索引值的索引。SQL Server 2005 Compact Edition (SQL Server Compact Edition) 在创建索引后将检查是否存在重复的值(如果数据已存在),并在每次使用 INSERT 或 UPDATE 语句添加数据时执行该检查操作。必须先消除重复值,然后才可对列创建唯一索引。如果存在重复的键值,则将取消 CREATE INDEX 语句并返回错误。只能对定义为 NOT NULL 的列创建唯一索引。如果存在唯一索引,则可能生成重复键值的 UPDATE 或 INSERT 语句将回滚,且 SQL Server Compact Edition 返回错误。即使 UPDATE 或 INSERT 语句更改许多行,但只要存在一个重复,上面这一点也将成立。

  • 主键索引

主键索引要求主键中的每个值是唯一的,(创建主键自动创建主键索引)

  • 聚集索引(CLUSTERED)

表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引

  • 非聚集索引(NONCLUSTERED)

表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个非聚集索引

  1. 创建索引的标准

用语频繁搜索的列;用语对数据进行排序的列
注意:如果表中仅有几行,或列中只包含几个不同的值,不推荐创建索引,因为SQL Server 在小型表中用索引搜索数据所花的时间比逐行搜索更长。

吾生也有涯,而知也无涯~~~