查询dm为4401开头的记录是用like '4401%' 还是 substr(dm,0,4)='4401' 效率高? 返回的记录集比较多. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 like更方便,效率更高.substr需要建立函数index才行. 个人感觉 like 的效率更高,因为substr的动作比like 多 可以考虑用INSTR:SQL> SELECT INSTR('4401ZZ4401','4401') STR FROM DUAL; STR---------- 1所以相应的WHERE语句是:WHERE INSTR(DM,'4401') = 1如果数据量大,可以考虑建基于INSTR(DM,'4401')函数的索引。 你这个like可以用到索引,substr不能用索引,除非你建基于substr的索引 我也同意like, 因为二范式里说=的左边少用函数 看看施行时间和实行计划被试一下'4401' = substr(dm,0,4) 为什么分区表会入库很慢 关于这条语句的优化方案 谢谢大家 优化一下性能 sql 中 判断是够为空 is null是对的,用=null可以吗 用显示游标输出表的所有信息 推介好用的Oracle工具 - Oracle SQL Handler - 支持Linux, 免装客户端 Oracle 查询结果如何重复使用? oracle em 多语言显示 Oracle初学者,请大家推见一点关于ORACLE的书 两个表之间进行连接的问题 帮忙 看一下这个问题 ORA-04098: 触发器 无效且未通过重新验证 如何解决? 在一个存储过程中如何多次使用同一个序列,
substr需要建立函数index才行.
SQL> SELECT INSTR('4401ZZ4401','4401') STR FROM DUAL; STR
----------
1所以相应的WHERE语句是:
WHERE INSTR(DM,'4401') = 1
如果数据量大,可以考虑建基于INSTR(DM,'4401')函数的索引。
试一下
'4401' = substr(dm,0,4)