SQL 创建索引的作用以及如何创建索引

SQL 创建索引的作用以及如何创建索引

SQL 创建索引的作用

一、使用索引的优点:

1、通过唯一性索引(unique)可确保数据的唯一性

2、加快数据的检索速度

3、加快表之间的连接

4、减少分组和排序时间

5、使用优化隐藏器提高系统性能

二、使用索引的原则:

1、在需要经常搜索的列上创建索引

2、主键上创建索引

3、经常用于连接的列上创建索引

4、经常需要根据范围进行搜索的列上创建索引

5、经常需要排序的列上创建索引

6、经常用于where子句的列上创建索引

三、不创建索引的原则:

1、查询很少使用和参考的列不建索引

2、对只有少数值的列不建索引

3、定义为text、image、bit的列不建索引

4、当需要update性能远远高于select性能时不应建索引

四、常用的命令:

1、sp_helpindex :报告表或视图上的索引信息

2、dbcc showcontig :显示指定表的数据和索引的碎片信息

3、dbcc dbreindex :重建指定数据库中一个或多个索引

4、dbcc indexdefrag :整理指定表或视图的聚集索引或辅助索引的碎片

五、优化索引:

1、重建索引(dbcc dbreindex)

2、索引优化向导

3、整理指定的表或视图的聚集索引和辅助索引碎片(dbcc indexefrag)

如何创建索引

CREATE INDEX 语句用于在表中创建索引。

在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。 您可以在表中创建索引,以便更加快速高效地查询数据。

用户无法看到索引,它们只能被用来加速搜索/查询。

注释:1、更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

2、唯一索引是指该字段不能有重复的值,而不是只能建立这一个索引。

进入查询窗口后,输入下面的语句:

CREATE INDEX mycolumn_index ON mytable (myclumn)

这个语句建立了一个名为mycolumn_index的索引。你可以给一个索引起任何名字,但你应该在索引名中包含所索引的字段名,这对你将来弄清楚建立该索引的意图是有帮助的。

注意:

在本书中你执行任何SQL语句,都会收到如下的信息:

This command did not return data,and it did not return any rows

这说明该语句执行成功了。

索引mycolumn_index对表mytable的mycolumn字段进行。这是个非聚簇索引,也是个非唯一索引。(这是一个索引的缺省属性)

如果你需要改变一个索引的类型,你必须删除原来的索引并重建 一个。建立了一个索引后,你可以用下面的SQL语句删除它:

DROP INDEX mytable.mycolumn_index

注意在DROP INDEX 语句中你要包含表的名字。在这个例子中,你删除的索引是mycolumn_index,它是表mytable的索引。

要建立一个聚簇索引,可以使用关键字CLUSTERED。)记住一个表只能有一个聚簇索引。(这里有一个如何对一个表建立聚簇索引的例子:

CREATE CLUSTERED INDEX mycolumn_clust_index ON mytable(mycolumn)

如果表中有重复的记录,当你试图用这个语句建立索引时,会出现错误。但是有重复记录的表也可以建立索引;你只要使用关键字ALLOW_DUP_ROW把这一点告诉SQL Sever即可:

CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)

WITH ALLOW_DUP_ROW

这个语句建立了一个允许重复记录的聚簇索引。你应该尽量避免在一个表中出现重复记录,但是,如果已经出现了,你可以使用这种方法。

要对一个表建立唯一索引,可以使用关键字UNIQUE。对聚簇索引和非聚簇索引都可以使用这个关键字。这里有一个例子:

CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)

这是你将经常使用的索引建立语句。无论何时,只要可以,你应该尽量对一个对一个表建立唯一聚簇索引来增强查询操作。

最后,要建立一个对多个字段的索引──复合索引──在索引建立语句中同时包含多个字段名。下面的例子对firstname和lastname两个字段建立索引:

CREATE INDEX name_index ON username(firstname,lastname)

这个例子对两个字段建立了单个索引。在一个复合索引中,你最多可以对16个字段进行索引。

用事务管理器建立索引

用事务管理器建立索引比用SQL语句容易的多。使用事务管理器,你可以看到已经建立的索引的列表,并可以通过图形界面选择索引选项。

使用事务管理器你可以用两种方式建立索引:使用Manage Tables窗口或使用Manage Indexes窗口。

上一篇:《java并发编程实战》读书笔记11--构建自定义的同步工具,条件队列,Condition,AQS


下一篇:ASP.NET自定义控件组件开发 第五章 模板控件开发