基本索引概念当从表中读取数据时,Oracle提供了两个选择:从表中读取每一行(全表扫描)通过ROWID一次读取一行当我们要访问大型表的少数行时,可能需要使用索引。因为如果没有索引,那么只能进行全表扫描。索引改进性能的程度取决于两个因素:1、数据的选择性2、表数据在数据块上的分布如果选择性很高(例如身份证号码),那么根据索引值返回的ROWID很少,如果选择性很低(例如国家)则返回的ROWID很多,那么索引的性能将会大大降低如果选择性很高,但是相关的行在表中的存储位置并不互相靠近,则会进一步减少索引的益处,如果匹配索引值的数据分散在表的多个数据块中,则必须从表中选择多个单独的块以满足查询,基于索引的读取是单块读取,如果使用全表扫描,使用的是多块读取以快速扫描表,因此全表扫描不见得比索引扫描速度慢。全表扫描和索引查找之间的平衡点1、分区2、并行DML3、并行查询4、使用db_file_multiblock_read_count进行更大的IO操作5、硬件更为快速6、磁盘上的缓存可以缓存更多的数据7、内存的廉价使得我们的内存进一步增大8、Oracle采用了增强的索引特性(例如跳跃式扫描索引)SE