请问大家数据库是怎样去进行查询的,如 select * from aa where col1 = 1;表aa是在存储在硬盘上的,在查询的时候,不知道数据库是怎么实现的查询,是不是把表aa取到内存之中,再根据where条件在内存中进行选择操作请大家讲讲这个实现的机理,给些链接也可以,谢了

解决方案 »

  1.   

    应该是直接根据where条件,符合条件的记录才读取放到高速缓存里,不符合的则不读取;
    然后想做什么操作就在缓存里操作
      

  2.   

    是这样的,表的数据都是存在于BLOCK中,Oracle把包含符合条件数据的BLOCK从磁盘取到内存,并返回给用户。这个过程是用server process进程来处理的。
      

  3.   

    先在buffer cache中查询是否有符合的,如果有直接读取,如果没有通过LRU算法,移动buffer cache,然后从数据块中读取出来放在buffer cache中,再读取。