读书人

细谈目录重点内容

发布时间: 2012-09-05 15:19:34 作者: rapoo

细谈——索引重点内容

细谈——目录重点内容

一,概念:

百度百科是这样定义的:索引对数据库库表中的一列或多列的值进行排序的一种结构,使用索引可以快速访问数据表中的特定信息。

(其实,对索引稍加了解的人都知道:数据库索引通俗来说就是数据库查询目录。就好比一本书前面的目录。有了目录的书,查询其所需看的章节内容来很是迅速、方便。同样数据库中索引的创建加快了数据的查询速度。)

二,索引的创建:

1,直接创建:(1)利用企业管理器的索引向导创建

(2)利用企业管理器直接创建

(3)利用T—SQL语句

2,间接创建:新建表时创建 (即:创建主键约束或唯一约束时,系统自动创建唯一性索引)

(注意:至于几种创建索引方法的操作、直接创建索引与间接创建索引的区别、各种方法创建的索引的优先级等在之后博客中介绍。

我们之所以创建索引,是因为索引给我们的数据检索带来很大

的方便,它大大提高了系统的性能。

三,1,创建索引的优点:

(1)保证了数据表中每一行数据的唯一性。

(2)大大加快了数据的检索速度(创建索引的主要原因及目的)——有了“数据目录”检索起来当然快速

(3)加速了表和表之间的连接 (特别在实现数据的参照完整性方面)

(4)减少查询中分组和排序的时间,加速数据检索

(5)在进行数据查询时,使用优化隐藏器,提高系统性能。

索引的创建可以带来如此大的方便和好处。那么我们可以毫无

顾忌的在每一列中都创建一个索引吗?

2,创建索引的缺点:

(1)创建和维护索引要耗费时间,并且耗费的时间随着数据量的增加而增加。

(2)索引占用存储空间(大家都知道数据表占用数据存储空间;其实每个索引也都要占用一定的存储空间,虽然索引占用的空间比数据占用的少,但是的确占用;尤其是建立聚集索引,需要的空间更大)

(3)在表中进行增、删、更、改等操作时,需要有额外的操作来维护索引——这样就降低了数据的维护速度

(如果没有建立索引,往表中插入数据,只需维护数据表;如果建立了索引,往表中插入数据的同时时,系统还需要更新数据在表中的位置,也就是说还需要更新索引表)

(4)由上可知:过多的索引会起反作用

既然:索引不止有着自己独特的优点,还存在着很多不足;那

么当然:我们要充分利用它的优点,来提高我们的工作效率。因

此:我们需要索引选择

四,索引选择:

如何进行索引选择?哪些列适合建立索引,需要建立索引?那些列不适合建立索引,不需要建立索引?索引的选择关系着索引的应用效率。

1,在这些列上创建索引:

(1)经常需要搜索的列

(2)作为主键的列上,强制该列的唯一性和组织表中数据的排列结构

(3)经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度

(4)经常需要根据范围进行搜索的列上 (因为索引已经排序,器指定的范围是连续的)

(5)经常需要排序的列上 (因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间)

(6)经常使用Where子句的列上——加快条件的判断速度

2,在这些列上不该创建索引:

(1)查询中很少使用或参考的列上 (因为,索引的目的就是提高检索效率。既然这些列很少使用,那么有无索引并不能提高检索速度。相反,由于增加了索引烦为降低了系统的维护速度、增大了空间需求)

(2)只有很少数据值得列上(因为,由于这些列的取值很少,例如“学生信息表”的姓名列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在索引表中搜索的数据行的比例很大。这样的列增加索引不能明显加快检索速度)

(3)对于那些定义为text,image和bit数据类型的列不应该增加索引 (因为,这些列的数据量,要么相当大,要么相当少)

(4)当修改性能远远大于检索性能时,不应该创建索引 (这是因为,修改性能和检索性能时互相毛肚的额。当增加索引是,会提高检索 性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引)

4楼kanglix1an昨天 21:24
好全面的说~~~加油啊~~~
Re: hanxuemin123457小时前
回复kanglix1ann恩 你也是 加油
3楼cjr15233661143昨天 21:24
我给你顶了一下,可是还是比踩少一票
2楼liutengteng130昨天 14:46
继续积累,加油。
Re: hanxuemin12345昨天 20:24
回复liutengteng130n恩 谢谢。加油
1楼honey_jaejoong昨天 10:29
学习啦~~
Re: hanxuemin12345昨天 11:07
回复honey_jaejoongn恩 互相学习

读书人网 >其他数据库

热点推荐