下面两个语句结果一个,写法不一样,能看出哪个快吗?
sfb01 NOT LIKE '49%' 和 AND substr(sfb01,1,3) = smyslip AND smydesc NOT LIKE '%补数%' 结果一样.-----------------------------------------------
SELECT MAX(sfb15)
FROM sfb_file,ima_file
WHERE sfb01 NOT LIKE '49%'
AND sfb221 IS NULL
AND sfb05 = ima01
AND ima06 IN ('0301','0302','0304')
AND sfb87 = 'Y'
AND sfb22 = '90A-10050245'
SELECT MAX(sfb15)
FROM sfb_file,smy_file,ima_file
WHERE sfb221 IS NULL
AND substr(sfb01,1,3) = smyslip
AND smydesc NOT LIKE '%补数%'
AND sfb05 = ima01
AND ima06 IN ('0301','0302','0304')
AND sfb87 = 'Y'
AND sfb22 = '90A-10050245'
sfb01 NOT LIKE '49%' 和 AND substr(sfb01,1,3) = smyslip AND smydesc NOT LIKE '%补数%' 结果一样.-----------------------------------------------
SELECT MAX(sfb15)
FROM sfb_file,ima_file
WHERE sfb01 NOT LIKE '49%'
AND sfb221 IS NULL
AND sfb05 = ima01
AND ima06 IN ('0301','0302','0304')
AND sfb87 = 'Y'
AND sfb22 = '90A-10050245'
SELECT MAX(sfb15)
FROM sfb_file,smy_file,ima_file
WHERE sfb221 IS NULL
AND substr(sfb01,1,3) = smyslip
AND smydesc NOT LIKE '%补数%'
AND sfb05 = ima01
AND ima06 IN ('0301','0302','0304')
AND sfb87 = 'Y'
AND sfb22 = '90A-10050245'
解决方案 »
- 求个SQL
- (ora-06502 pl sql 数字或值错误 字符串缓冲区太小)(ORA-03127 no new operations allowed until ..)
- oracle procedure执行问题
- Oracle10g recycle bin的問題
- 50分,求一条sql语句,各位路过的大哥,进来休息一下。。。。。。。。。
- 各位大侠,请求一个oracle存储过程和临时表的问题!急急!
- 存储过程实际存在哪
- 如何删带有外键的表(oracle中)
- ??????????????
- The Network Adapter could not establish the connection 供应商代码 17002(Oracle 12c)
- rman备份的问题
- --大家过来帮我看一看:自动生成公司发票号,这样设计合理吗?--
因为 substr(sfb01,1,3) = smyslip 对每一行的“sfb01” 要进行SUBSTR处理,所以效率低,并且sfb01 如果是索引字段的话,substr(sfb01,1,3)是绝对不会用到索引的。不过最好还是从执行计划上去分析,看看那个更快。
AND substr(sfb01,1,3) = smyslip AND smydesc NOT LIKE '%补数%'
就上面两个条件来说,如果sfb01列上建有索引,第一种是优于第二种的
因为第二种对索引列进行运算及NOT LIKE'%补救%'根本使用不上索引!
你这2个sql的查询条件都不一样(查询满足的条件)。没有可比性。
如果你真的需要比较他们间的差异的话,就只有看执行计划了。
看下执行前后时间差
效率不是特高