现在有张表tchest,里面的数据是9999999,表中的fsrc都是1234,表中的fcode是主键,
我两条SQL语句:
一、select max(c.fcode) from tchest c;
二、select max(c.fcode) from tchest c where c.fsrc = '1234';
从数据上来看,这个where条件加不加都是可以的用第一条语句执行速度很快,零点几秒就可以了,
用第二条语句执行的时候,半分钟都没有结果出来。我看了下执行计划,
第一条语句写的是INDEX FULL SCAN(MIN/MAX);
第二条语句写的是TABLE ACCESS FULL我就算在fsrc上加索引,执行效果还是一样的……哪位来告诉俺一下,这是咋回事呀
我两条SQL语句:
一、select max(c.fcode) from tchest c;
二、select max(c.fcode) from tchest c where c.fsrc = '1234';
从数据上来看,这个where条件加不加都是可以的用第一条语句执行速度很快,零点几秒就可以了,
用第二条语句执行的时候,半分钟都没有结果出来。我看了下执行计划,
第一条语句写的是INDEX FULL SCAN(MIN/MAX);
第二条语句写的是TABLE ACCESS FULL我就算在fsrc上加索引,执行效果还是一样的……哪位来告诉俺一下,这是咋回事呀
解决方案 »
- 数据是怎么写入的,oracle内部运行机制是何?小批量的数据commit,数据存在什么地方?
- USER_SCHEDULER_JOB_RUN_DETAILS
- 关于取别名的问题,求助
- 连不上数据库 在线
- Oracle 10g 中如何对一个表进行排他锁定 而且需要锁定一定时间
- 关于分批删除记录的方法
- oracle服务器有些慢,帮忙看看,进程有没有问题?
- 登陆oracle出现如下问题.怎么解决?
- 高分请高手讲解一下Oracle9i的以下几个服务的具体用途!谢谢先!
- 当我安装了oracle9后,敲入本级ip后不出现原来我的页面,而出现一些关于oracle的东西来?怎么解决?
- 传入字符分隔的一个字符串,如何据此插入多条数据?
- oracle日期函数
第二条语句写的是TABLE ACCESS FULL
第二条语句写的是TABLE ACCESS FULL
二.既然你的表字段fsrc都是1234,那么你的条件where c.fsrc = '1234';还有意义么?岂不是每行
数据的内容都满足你的条件?即使你在这个字段上加了一个索引,索引里面也只是只有一条1234而已,所以
执行计划就全表Access了
补充一点,SQL文执行顺序是从右往左的