用一句话描述下oracle中,索引为什么能提高查询速度?

解决方案 »

  1.   

    如果是描述它快,那么就是像查字典一样,给予一个大的目录,然后用目录定位位置,查询数据,比大海捞针或按顺序从头到尾找好多了。也就是列存在索引中,用列定位了目录,找到rowid,然后用rowid定位行。如果描述它慢,给你1000页的字典,你要找900页的内容,难道还需要先找目录,然后从目录定位位置,然后去查数据吗??太多的重复工作,这时候肯定不如我直接从第1页开始找,按顺序来的快,因为还走索引,就太多重复工作了,不如直接从内容中找快。也就是找的太多了,那么直接全表快。有的时候,比如就3条数据把,查询1条,那么走什么快呢,答案,直接全表得了,1,2,3翻完,对应oracle中就是表在高水位下数据块小于DB_MULTI_BLOCK_READ_COUNT,一个I/O就搞定,不需要读索引 
      

  2.   

    非要用一句话说,那就是 快速定位。不过感觉前因后果你并不清楚的情况下对你并没什么帮助,建议你看一下:Oracle 9i&10g编程艺术:深入数据库体系结构 这本书的第11章