索引的优缺点:
优点加快访问速度,缺点带索引的表在数据库中需要更多的存储空间,操纵数据的命令需要更长的处理时间,因为它们需要对索引更新。(访问性能提高、维护性能降低)
创建索引的指导原则:
该列用于频繁搜索;该列用于数据排序时 可考虑该列创建索引。
列中仅包含几个不同的值(如性别字段);表中仅包含几行,因为索引本身也耗资源。 不考虑创建索引。
聚集索引和非聚集索引的根本区别:
聚集索引和非聚集索引是表记录的排列顺序和与索引的排列顺序是否一致,聚集索引表记录的排列顺序与索引的排列顺序一致。
通俗点理解,汉语字典的通过拼音查找的方法,就是一种聚集索引。通过偏旁部首的查找方法,就是非聚集索引。理解了这个你恐怕就不难理解为啥一个表只能有一个聚集索引了。
聚集索引和非聚集索引的优缺点:
正因为它们之间的区别才决定了它们的优缺点。
聚集索引的优点是查询速度快,因为一旦具有第一个索引值的纪录被找到,具有连续索引值的记录也一定物理的紧跟其后。
聚集索引的缺点是对表进行新增、修改、删除速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致,而把记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度。
非聚集索引的优点是查询比较慢。
非聚集索引的缺点是对数据新增、修改、删除的影响很小。
总结,其实聚集索引的优点即非聚集的缺点,聚集的缺点即非聚集的优点。至于何时用聚集索引何时用非聚集索引,得看具体情况,下面将根据此处分析的优缺点总结出适合它们应用的场合。
聚集索引和非聚集索引的场合:
动作描述 | 使用聚集索引 | 使用非聚集索引 |
列经常被分组排序 | yes | yes |
返回某范围内的数据 | yes | no |
一个或极少不同值 | no | no |
小数目的不同值 | yes | no |
大数目的不同值 | no | yes |
频繁更新的列 | no | yes |
外键列 | yes | yes |
主键列 | yes | yes |
频繁修改索引列 | no | yes |
比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询2004年1月1日至2004年10月1日之间的全部数据时,这个速度就将是很快的,因为您的这本字典正文是按日期进行排序的,聚类索引只需要找到要检索的所有数据中的开头和结尾数据即可;而不像非聚集索引,必须先查到目录中查到每一项数据对应的页码,然后再根据页码查到具体内容。