RT,用索引为什么能提高查询效率?这个问题还真不知道,菜鸟啊

解决方案 »

  1.   

    oracle的一个好像叫“查询树”的内部处理机制,记住就行了,表深究。
      

  2.   

    引入索引的木的是为了加快查询的速度。在无条件查询的情况下会查询所有的纪录,但是在有条件查询的情况下,如果仍然还要先查询出所有的纪录,然后才能找到符合条件的纪录的话,未免有些迟钝,显然缺失技巧。设想一个包含数百万纪录的表,要在其中挑出符合条件的一条纪录,如果没有索引,RDBMS就要顺序地、逐条地读取纪录并进行条件比较(全表扫描)。这个计算量就大了,而且需要大量的I/O操作,从而影响系统的戏能。
    简单的说,如果将表看作一本书,索引的作用就类似于书中的目录。在没有目录的情况下,要在书中查找制定的内容(即查询条件),必须查阅全书;而有了目录之后,只需要通过目录就可以快速地找到包含所需内容的页。类似的,如果在表中插叙指定的纪录,在没有索引的情况下,必须遍历整个表,而有了索引之后,只需要先在索引中找到符合条件的索引列值,就可以通过保存在索引中的ROWID(相当于页码)快速找到表中对应的纪录。因此,为表建立索引,既能够减少查询操作的时间开销,又能产少I/O操作的开销。
    目录和索引之所以能提高查询速度,是因为它们是按查询条件存储数据的,数据量少而且排列有序,便于采用数学方法进行快速定位。另外还提供了一个指向内容的指针,即书的页码或纪录的ROWID