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窗口。 

转载于:https://www.cnblogs.com/len0031/p/3780920.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值