首页 > 数据库 > SQL Server > 正文

SQL Server中定义索引时需要注意的事项

2023-05-29 12:05:27
字体:
来源:转载
供稿:网友

索引纪录了所索引列在数据库表中的物理存储位置,实现了表中数据的逻辑排序。使用索引可以加快数据查询速度、减少系统响应时间、可以使表和表之间的连接速度加快。

但是,索引的乱用可能达不到预期的效果,反而给数据库增加了负担,下面介绍一些定义索引的基本原则:

1、定义索引需要付出一定代价,使用时需要权衡利弊

创建索引和维护索引都需要花费时间与精力。当建有索引的表中的纪录又增加、删除、修改操作时,数据库要对索引进行重新调整,需要消耗服务器的资源。当表中的数据越多,这个消耗的资源也就越多。每个索引都会占用一定的物理空间。若索引多了,不但会占用大量的物理空间,而且,也会影响到整个数据库的运行性能。因此,建立索引时,需要在得与失之间进行权衡。

2、不要对查询中很少涉及的列或者重复比较多的列建立索引

在这样的字段上建立索引,不能提高查询速度,反而增加了系统维护时间和占用了系统空间,会降低数据库的整体性能。

3、对于按范围查询的列要尽量建立索引

对于需要在指定范围内快速或者频繁查询的数据列,需要为其建立索引。因为索引已经排序,其保存的时候指定的范围是连续的,查询可以利用索引的排序,加快查询时间,减少用户等待时间。

若虽然可能需要按范围来进行查询,但是,若这个范围查询条件利用的不多的情况下,最好不好采用索引。另外,对于采用范围查询时,最好能利用TOP关键字来限制一次查询的结果。可以大大的提高查询的效率。

4、为主键或外键建立索引

定义有主键的索引列,一定要为其建立索引。因为主键可以加速定位到表中的某一行。结合索引的作用,可以使得查询的速度加倍。另外,若要使得某个字段的值唯一,可以通过两种索引方式实现。一种就是上面所讲的主键索引。还有一种就是唯一索引,利用UNIQUE关键字指定字段内容的唯一性。这两种方式都会在表中的指定列上自动创建唯一索引。这两种方式的结果没有明显的区别。查询优化器不会区分到底是哪种方式建立的唯一性索引,而且他们进行数据查询的方式也是相同的。

若某张表中的数据列定义有外键,则最好也要为这个字段建立索引。因为外键的主要作用就在于表与表之间的连接查询。若在外键上建立索引,可以加速表与表之间的连接查询。

5、不要为特殊的数据类型建立索引

有些字段比较特殊。如文本字段(TXT)、图像类型字段(IMAGE)等等。如果表中的字段属于这些数据类型,则最好不要为其建立索引。因为这些字段有一些共同的特点。如长度不确定,要么很长,几个字符;要么就是空字符串。在这种类型的字段上建立索引,那根本起不了作用。相反,还增加了系统的负担。

6、索引可以跟Where语句的集合融为一体

对于经常用在Where子句中的数据列,将索引建立在Where子句的集合过程中,对于需要加速或者频繁检索的数据列,可以让这些经常参与查询的数据列按照索引的排序进行查询,以加快查询的时间。

总之,索引似一把双刃剑,即可以提高数据库的性能,也可能对数据库的性能起到反面作用。在具体使用过程中要做好平衡。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表