日期:2014-05-16 浏览次数:20499 次
索引是一种特殊类型的数据库对象,它在数据库中的作用就像目录在书籍中的作用。为表增加索引,可以大大提高数据的检索效率。
索引的导图如下:
1.基础知识
1)数据存储
说索引之间先来概述一下数据存储,存储的基本单位是页。每页开始部分是96B的页首,用于存储系统信息,如页的类型、页的可用空间量、拥有页的对象ID等。如下图所示
2)索引的概念
索引的基本结构就是以为单位构成的B树组织。索引内的每一页包含一个页首,页首后面跟着索引行。第个索引行都包含一个键值以及一个指向较低级页或数据行的指针。索引的每个页称为索引结点。B树的项端结点称为根结点,索引的底层结点称为叶结点,根与叶之间的任何索引级统称为中间级。
3)索引意义
索引是一个表中所包含值的列表,其中注明了表中包含各个值的行所在的存储位置,使用索引查找数据时,先从索引对象中获得相关列的存储位置,然后再直接去存储位置查找所需要信息,这样就无需对整个表进行扫描,从而可以快速找到所需数据
4)使用代价
万事皆有利弊,索引也不例外。使用索引可以的提高系统的性能,大大加快数据检索的速度,但却要付出一定的代价。
- 索引需要占用数据表以外的物理存储空间
- 创建索引和维护索引要花费一定的时间
- 当对表进行更新操作时,索引需要被重建,这样就降低了数据的维护速度。
5)建立原则
做事讲究度,把握好了度就能事半功倍。索引的建立也逃不出此原则。可概括为“一要两不要、一可一最好”
- 一要:主键列上一定要建立索引
- 两不要:查询中很少涉及的列、重复值比较多的列不要建立索引,定义为text、