为什么这两条语句执行效率差这么多? 把第二条语句中的b.ftype=1和t.fdatetime=b.fdatetime 调换一下位置呢?会不会快些? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据量的问题,第一条语句是在筛选后进行的两表全连接,相对与第2种情况,数据量肯定要小很多.如果 a 10条 b 100条 --直接连接 1000条 , 筛选后 a 剩下3 b剩下 10 连接是30条,再分组查询你说谁快. 第一条sqland b.fdatetime>=to_date('2004-11-30','yyyy-mm-dd') and b.fdatetime<=to_date('2004-11-30','yyyy-mm-dd') 怎么既大于等于又小于等于?第二条sqlt.fdatetime=b.fdatetime这两个字段的数据在表里面本身都是0点整么?我估计你的问题就出在这t.fdatetime=b.fdatetime 应紧跟在where后面最大过滤的条件应放在where的最后面 就是Lokioo((火神啊!)) 说的道理。 问题在表的连接上,第一种方法分组检索出来后再连接的,第二中方法连接后再分组,资源都消耗在连接表的过程中。如果在total_reg表的fdatetime字段上加索引,第二种方法效率可能有所改观。 oracle数据库在解析SQL语句时,是逆向解析的。所以写SQL语句时最好遵循以下原则:FROM后有N(N>=2)个表时,数据量最小的表一定要放在最后,依次类推。WHERE后有N(N>=2)个条件时,条件限制严格的一定要放在最后,依次类推。否则的话,在其他条件保持不变的情况下,执行效率会有数量级的差异。这是经过N次测试得出的结果 第一条语句在from后面oracle会将成生成内部视图.在生成内部视图之后会使查询效率快速提升.至少这是其中一个原因. Lokioo((火神啊!)) : 如果是这样,岂不是关联多表查询时,都应该提倡的一种方式,可是大部分书上、学习的内容都是第二种方式呢,我想第二种方式是不是也有它的优点呢? 请用set autotrace onlytrace;查看执行计划. 应该 是:set autotrace traceonly; 多实例多监听如何配置 请问,sql语句中的 in匹配问题 PowerDesigner怎么导入Oracle 关于存储过程返回文本信息varchar2不够 初学oracle,想问问看具体应该怎么入手?100分奉上 Oracle的问题 如何在ORACLE中实现类似SQLSERVER中的自增ID的字段? 请问一个update的语法 oracle <Collection>类型如何取出来 连个查询语句合在一块的问题 在线等,关于字符串问题,急急急急急急急急急急急急急!!!!!!!!!!!!!!!!!!!!!!!!!! 怎样获取各个月份,各个部门的迟到人数
如果 a 10条 b 100条 --直接连接 1000条 , 筛选后 a 剩下3 b剩下 10 连接是30条,再分组查询
你说谁快.
and b.fdatetime>=to_date('2004-11-30','yyyy-mm-dd')
and b.fdatetime<=to_date('2004-11-30','yyyy-mm-dd')
怎么既大于等于又小于等于?
第二条sql
t.fdatetime=b.fdatetime
这两个字段的数据在表里面本身都是0点整么?我估计你的问题就出在这
t.fdatetime=b.fdatetime 应紧跟在where后面
最大过滤的条件应放在where的最后面
FROM后有N(N>=2)个表时,数据量最小的表一定要放在最后,依次类推。
WHERE后有N(N>=2)个条件时,条件限制严格的一定要放在最后,依次类推。
否则的话,在其他条件保持不变的情况下,执行效率会有数量级的差异。
这是经过N次测试得出的结果
在生成内部视图之后会使查询效率快速提升.至少这是其中一个原因.
如果是这样,岂不是关联多表查询时,都应该提倡的一种方式,可是大部分书上、学习的内容都是第二种方式呢,我想第二种方式是不是也有它的优点呢?
查看执行计划.
set autotrace traceonly;