CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  非技术区

两张表结构完全相同的表,相同的查询条件,为何记录条少的查询速度反而慢?

楼主chunzhilv(春之绿)2006-12-04 13:57:48 在 Oracle / 非技术区 提问

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

1 楼chunzhilv(春之绿)回复于 2006-12-04 15:22:29 得分 0

 
  我现在把问题详细讲一下:  
  表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'  
  查询速度速度快,结果却相反.Top

2 楼baojianjun(包子)回复于 2006-12-04 16:50:33 得分 0

贴一下你A表的索引有哪些   都是怎么建立的  
   
  Top

3 楼baojianjun(包子)回复于 2006-12-04 16:54:06 得分 0

可能的原因:  
  1.A表上的FLAG上没有索引  
  2.A表的索引是以FLAG,RECEIVER   这样的顺序的索引  
  3.A表上需0.2秒那是RECEIVER有索引,B表上没有索引所以查询时间大约需0.5秒.  
   
  顺便问下A表上的FLAG中的值是否就是0,1,2,3比较少的几种值,如果种类不超过10种建议使用BITMAP索引  
   
  最好把执行计划贴出来看看就知道慢在哪里了Top

4 楼chunzhilv(春之绿)回复于 2006-12-04 17:17:41 得分 0

表A和表B都没有加任何索引,A表上的FLAG中的值有0,1,2,3,4,5,6,7,8,9九种。我这上面也没有执行计划。Top

5 楼user_job()回复于 2006-12-05 22:00:21 得分 0

按照人的描述我是这么理解的.       因为你在20万条记录找(因为都是做全表扫描)   A.RECEIVER   =   '60269'   快的原因是   此条件的记录比较多....  
  而你在建的B表中   CREATE   TABLE   B   AS   SELECT   A.*   FROM   A   WHERE   A.FLAG   =   '0'   只是把   A.FLAG   =   '0'   的记录条数给转到B表..但是A.FLAG   =   '0'   的但A.RECEIVER   =   '60269'的记录条数并不多.在总记录为8万条中查少量的A.RECEIVER   =   '60269'的记录当然会慢点Top

6 楼chunzhilv(春之绿)回复于 2006-12-06 18:03:06 得分 0

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

7 楼SmallHand(火龍)回复于 2006-12-06 22:38:40 得分 0

create   比   单纯的   select   干的活多!Top

相关问题

关键词

得分解答快速导航

  • 帖主:chunzhilv

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo