数码鹭岛论坛

标题: 如何创建索引 [打印本页]

作者: 翔子    时间: 2004-4-15 11:45
标题: 如何创建索引
如何创建索引  
如果决定创建一个索引,那么确定为哪些字段创建索引是非常重要的。对于不同的表,可以会选择一个或多个字段创建索引。
  
可使用如下方法来确定在哪此字段上创建索引:
  
选择那些最常出现在WHERE子句中的字段。经常被访问的字段最可能受益于索引。  
经常用于连接表的字段是创建索引的必然候选字段。  
必须注意索引导致的查询语句性能的提高与更新数据时性能的降低之间的平衡。  
经常被修改的字段不适合创建索引,其原因是更新索引将导致系统开销。
在某些情况下,使用复合索引的效率可能比使用简单索引的效率更高。正同的一些例子说明了应当在何种情况下使用复合索引。
  
某两个字段单独来看都不具有惟一性特点,但结合在一起却具有惟一性特点。那么这种情况下复合索引将工作很好。例如:A字段和B字段都几乎没有惟一性值,但绝大多数情况下,字段A和B的某个特定组合却具有惟一性特点。 那么在检索数据时,可在WHERE子句中使用AND操作符来将这两个字段连接在一起。  
如果SELECT语句中的所有值都存位于复合索引中,那么Oracle将不会检索表,而直接从索引中返回数据。  
如果多个查询语句的WHERE子句作为查询条件的字段都不相同,但返回的记录相同,那么应当考虑利用这些字段创建一个复合索引。
如果对复合索引进行了仔细设计,那么复合索引非常有助于提高系统性能。就象单子段索引一样,如果应用程序开发者在设计应用程序时就充分考虑到了系统中的复合索引,那么这些复合索引将发挥巨大作用。
  
在创建索引之后,管理员应当定期利用 SQL TRACE工具或EXPLAIN PLAN来查看用户查询是否充分利用了索引。很有必要花费一定精力来试验使用索引和未使用索引的查询在效率上的差别,以判断索引所耗资源是否物有所值。
  
应该删除那些不经常使用的索引。可使用ALTER INEX MONITORING USAGE语句来跟踪索引的使用情况。还可从系统表ALL_INDEXS、USER_INDEXES和DBA_INDEXS中查询用户访问索引的频率。
  
如果为一个不适合创建索引的字段或表创建了索引,那么这可能会导致系统能力的下降,而如果创建的合理,那么这将降低系统的I/O操作并加快数据访问速度,从而大大提高系统性能。




欢迎光临 数码鹭岛论坛 (http://www.clore.net/forum/) Powered by Discuz! X3.2