作为一名数据库管理维护人员。无法避免的问题就是,当数据库中的数据累计到一定规模时,必然会出现数据库性能降低,数据查询缓慢,甚至无法正常使用的情况。这就像是迷失了方向的旅客无法找到归途。那么如何能够快速准确的找到正确的道路呢?是一条路一条路的试,还是问问过路的动物呢?答案当然是请教于神仙了。这就是仙人指路了。呵呵,开开玩笑。

    那么如何才能在数据库中请教于神仙呢?我们所要做的第一步就是请神!换句话说就是创建索引。索引就是对数据表的数据建立相当于图书目录的东西。在需要查找数据时首先查找索引目录。在目录中找到相应的位置后,直接到数据表中提取。这样做的优势显然大于去每条数据逐个查找。既然索引具有如此优势,那么如何建立呢?建立又是否复杂呢?答案是让你轻松的,结果是让你愉快的。

    那么现在演示如何创建索引,以及查看使用索引和不使用索引的速度区别。

 

要为表创建索引,首先要先了解一下表的结构。可以用SQL语句来查看一下当前的记录条数。

在这里查询的时候,建议开启上面红框内的“包括实际的执行计划”选项,打开后会出现下面红框内的“执行计划”栏。

选择“执行计划”栏。鼠标移动到“聚集索引扫描”上停顿一秒,会出现详细信息,这时记录“估计运算符开销”的数值。这个数值就是在表中查找数据所用的时间。

现在展开要创建索引的表,右键点击“索引”-选择“新建索引”

输入索引名称,选择类型为“非聚集”。(有非聚集当然也有聚集。聚集就是有序排列,如数字1.2.3.4······,非聚集就是无序排列。大部分数据都是非聚集的。)

点击“添加”添加索引键列。(就是要在哪一列中查找内容就选那一列。)

之后在选择页中选择“包含性列”,点击“添加”,添加包含列。(可选项)

点击“确定”新的索引就创建好了。下面来试试新索引的速度。

 

 

现在先不使用索引进行查找。(右键单击索引名称,选择“属性”-“选项”)

运行select * from Person.Address where city='albany'

命令后,“执行计划”栏中出现了三个项目。要查看此次命令的查询时间,我们就需要将这三项的“估计运算符开销”相加。

实验原因,现在仅用三项中最大的一项来验证。最大一项中“估计运算开销”值为0.1801413

现在打开索引

执行与刚才相同的命令,再查看“估计运算符开销”值。现在仅仅是0.0032837比之前的0.1801413提高了54倍有余。这仙人指路的称号是当之无愧了。

 

注:大仙虽然强悍,但也不是想用就用的。索引亦然。在下面六种情况下,使用索引要注意。

1 查找条件中,不要将字段进行运算。

2 LIKE模糊差选字段的通配符是第一个字符,查询不会使用索引。

3 查询条件使用not或者!=操作符时,查询不会使用索引。

4 使用组合索引,查询条件必须包含组合索引里的第一个索引字段。

5 如果查询结果字段与查询条件字段总是成对出现,建议使用所引表查询。

6 查询结果数据大于全部数据20%以上,数据库不会使用索引。