索引类型:聚集索引和非聚集索引
字典的字母索引是聚集索引,偏旁索引是非聚集索引。总的来说聚集索引是存在一个已有顺序的基础上查询,非聚集没有顺序。聚集是物理上的联系,非聚集是逻辑上的连续。一个表只能有一个聚集索引,非聚集索引可以有多个。 这个物理连续就是表本身的顺序,比如书架的索引,ABCD就是物理连续的,作者名就是逻辑连续的,这个物理连续是某种意义上被定义好的。
在建立索引前,查询是逐条查询,每条记录都要查询,查询完为止。
聚集索引会在数据库的一部分内存空间存放排列的值,如1-100这就是某种意义上的物理顺序。所以当插入数据时会重新排序,相当于一个数组插入数据。而非聚集索引其实可以看作是一个含有聚集索引的表,他只仅包含原表中非聚集索引的列和指向实际物理表的指针。
一些注意点:
频繁更新的列(新增值需要重排序)和频繁修改索引列的表不应该加聚集索引,经常返回某个范围的值不应该用非聚集索引,因为物理排序本身就是有顺序范围的,非聚集没有。
建立索引的原则:
1) 定义主键、有外键、经常查询的数据列一定要建立索引。
2) 对于需要在指定范围内的快速或频繁查询的数据列;
3) 经常用在WHERE子句中的数据列。
4) 经常出现在关键字order by、group by、distinct后面的字段,建立索引。如果建立的是复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。
5) 对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。
6) 对于定义为text、image和bit的数据类型的列不要建立索引。
7) 对于经常存取的列避免建立索引
8) 限制表上的索引数目。对一个存在大量更新操作的表,所建索引的数目一般不要超过3个,最多不要超过5个。索引虽说提高了访问速度,但太多索引会影响数据的更新操作。
9) 对复合索引,按照字段在查询条件中出现的频度建立索引。在复合索引中,记录首先按照第一个字段排序。对于在第一个字段上取值相同的记录,系统再按照第二个字段的取值排序,以此类推。因此只有复合索引的第一个字段出现在查询条件中,该索引才可能被使用,因此将应用频度高的字段,放置在复合索引的前面,会使系统最大可能地使用此索引,发挥索引的作用。
网友评论