索引一个可以瞬间提升SQL的查询效率几倍甚至是几十倍,但有时却又会成为SQL的包袱,让人痛苦不堪。作为一个初学者,现在的我更多的是看到它给我带来的便利。
由衷的说一句,索引真的是一个好东西,此处为自己学习和使用中的一些心得体会,随着深入了解,会继续改善
索引相对于数据表而言,以我目前的理解就是:
在oracle的另一个地方只对该表分配了一个专门的数据块来存放这些索引,当用索引项进行查询时,oracle首先会到索引块中读取出相应的数据项,然后根据这个数据项再到oracle原表的相应位置读出数据来,通过这种方法定点的读取数据,提高搜索效率。
但是索引也有一些弊端,因为它是重新分配在一个区域的,当数据增加的时候,相应的索引也会跟着增加,但是分配的数据模块位置可能和以前的数据块不在一起了,这样读起来的时候,就增加了一些时间。所以在建索引时要慎重,并不是建的越多越好,如果数据量比较大的时候可以定期的更新索引,最为妥当的办法是,删除掉该索引,新建一个索引,这样效率就提高了。
索引除了单一的索引外还有复合索引,在建复合索引的时候要注意第一项的选择,第一项也被称为是引导项,尽量选择数据种类比较少的项作为引导项,这样可以提高索引的效率。原因如下:
复合索引,首先根据引导项把索引分为几个模块,然后根据后面的项逐次进行查询。因此要注意引导项的选择。
(待续)