更新时间:2016年09月26日09时48分 来源:传智播客Java培训学院 浏览次数:
使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构, 与必须搜索表中的所有行相比,索引会
帮助您更快地获得该信息。
索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引
的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。
作为通用规则,只有当经常查询索引列中的数据时,才需要在表上创建索引。索引占用磁盘空间,并且降低添加、删除和更新行的速度。
如果经常同时搜索两列或多列或按两列或多列排序时,索引也很有帮助。例如,如果经常在同一查询中为姓和名两列设置判据,那么在这两列上
创建多列索引将很有意义。
索引类型
根据数据库的功能,可以在数据库设计器中创建四种索引:唯一索引、主键索引和聚集索引、非聚集索引。
a.唯一索引
唯一索引是不允许其中任何两行具有相同索引值的索引。
b.主键索引
数据库表经常有一列或列组合,其值唯一标识表中的每一行,该列称为表的主键。
在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。
c.聚集索引
在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。
如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。
d.非聚集索引
非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以有多个,小于249个。
主键选择原则:
(1)主键设计4 原则
为关联字段创建外键。
所有的键都必须唯一。
避免使用复合键。
外键总是关联唯一的键字段。
(2) 使用系统生成的主键
设计数据库的时候采用系统生成的键作为主键,那么实际控制了数据库的索引完整性。这样,数据库和非人工机制就有效地控制了对存储数据中
每一行的访问。采用系统生成键作为主键还有一个优点:当拥有一致的键结构时,找到逻辑缺陷很容易。
(3) 不要用用户的键(不让主键具有可更新性)
在确定采用什么字段作为表的键的时候,可一定要小心用户将要编辑的字段。通常的情况下不要选择用户可编辑的字段作为键。
(4) 可选键有时可做主键
把候选键进一步用做主键,可以拥有建立强大索引的能力。
索引使用原则:
索引是从数据库中获取数据的最高效方式之一。95%的数据库性能问题都可以采用索引技术得到解决。
请按照下列标准选择建立索引的列。
该列用于频繁搜索; 该列用于对数据进行排序。
请不要使用下面的列创建索引:
列中仅包含几个不同的值;不要为小型数据表设置任何键,假如它们经常有插入和删除操作就更别这样作了。对这些插入和删除操作的索引维护
可能比扫描表空间消耗更多的时间。
索引查询是数据库中重要的记录查询方法,要不要进入索引以及在那些字段上建立索引都要和实际数据库系统的查询要求结合来
考虑,下面给出实际中的一些通用的原则:
1. 在经常用作过滤器的字段上建立索引;
2. 在SQL语句中经常进行GROUP BY、ORDER BY的字段上建立索引;
3. 在不同值较少的字段上不必要建立索引,如性别字段;
4. 对于经常存取的列避免建立索引;
5. 用于联接的列(主健/外健)上建立索引;
6. 如果非要在经常存取的多个列上建立复合索引,但要注意复合索引的建立顺序要按照使用的频度来确定;
7. 缺省情况下建立的是非簇集索引,但在以下情况下最好考虑簇集索引,如:含有有限数目(不是很少)唯一的列;进行大范围的查询;充分的
利用索引可以减少表扫描I/0的次数,有效的避免对整表的搜索。当然合理的索引要建立在对各种查询的分析和预测中,也取决于DBA的所设计的
数据库结构。
本文版权归传智播客Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客Java培训学院
首发:http://www.itcast.cn/javaee