有表A和表B,两者表结构完全相同,且都没有任何索引。表A中有20多万条记录,表B中有8万多条记录,现在分别对这两个表进行查询,查询条件完成相同。出现的结果是查询表B的时间比查询表A的时间长。理论应该是查询表B的时间比查询A的时间短。
不知道为什么会出现与理论完全相反的结果。请各位高手指教!

解决方案 »

  1.   


    我现在把问题详细讲一下:
    表A中有20多万条记录,表A进行查询,查询语句为:
    SELECT A.* FROM A WHERE A.RECEIVER = '60269' AND (A.FLAG = '0')
    这时查询速度比较慢,大约需要1.5秒种.如果把查询条件中 AND (A.FLAG = '0') 去掉,查询速度就快了,大约只需0.2秒.
    于是我新建了一张表B,建表语句为:
    CREATE TABLE B AS SELECT A.* FROM A WHERE A.FLAG = '0'.
    这时表B中有8万条记录。对表B进行查询,查询语句为:
    SELECT B.* FROM B WHERE A.RECEIVER = '60269' ,查询时间大约需0.5秒。
    按我的理解是查询速度应该比 SELECT A.* FROM A WHERE A.RECEIVER = '60269'
    查询速度速度快,结果却相反.
      

  2.   

    个人认为现把几次不同查询语句的SQL执行计划贴出来看一下 
    可能的原因是由于索引的使用所引起的
      

  3.   

    谢谢各位。问题已经解决。我在表B的RECEIVER字段上加了个索引,查询速度就很快了。但是我所描述问题的出现的原因还是有点不太清楚。