表中将近有1100万数据,很多时候,我们要进行字符串匹配,在SQL语句中,我们通常使用like来达到我们搜索的目标。但经过实际测试发现,like的效率与instr函数差别相当大。下面是一些测试结果:
SQL> set timing on
SQL> select count(*) from t where instr(title,’手册’)>0;
COUNT(*)
———-
65881
Elapsed: 00:00:11.04
SQL> select count(*) from t where title like ‘%手册%’;
COUNT(*)
———-
65881
Elapsed: 00:00:31.47
SQL> select count(*) from t where instr(title,’手册’)=0;
COUNT(*)
———-
11554580
Elapsed: 00:00:11.31
SQL> select count(*) from t where title not like ‘%手册%’;
COUNT(*)
———-
11554580
注:
instr(title,’手册’)>0 相当于like
instr(title,’手册’)=0 相当于not like
分享到:
相关推荐
8. **使用instr代替LIKE**:对于需要使用LIKE进行过滤的情况,可以考虑使用Oracle内置的instr函数,它通常比LIKE操作更快。 9. **避免使用UNION**:UNION操作会删除重复记录,这需要排序操作,可能会消耗大量资源。...
与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,但是它们使用POSIX 正则表达式代替了老的...
遇到需要用到 LIKE 过滤的 SQL 语句,完全可以用 INSTR 代替。处理速度将显著提高。 7. UNION 操作符的优化 UNION 操作符在进行表链接后会筛选掉重复的记录,因此在表链接后会对所产生的结果集进行排序运算,删除...
在mysql中使用内部函数instr,可代替传统的like方式查询,并且速度更快。 instr 函数,第一个参数是字段,第二个参数是要查询的串,返回串的位置,第一个是1,如果没找到就是0. 例如,查询字段name中带”军”的...
- **LIKE 操作符**:使用 LIKE 进行模糊匹配时,可以考虑使用 INSTR 函数替代,以提高性能。 - 示例:`SELECT * FROM T1 WHERE NAME LIKE '%abc%'`,可以替换为:`SELECT * FROM T1 WHERE INSTR(NAME, 'abc') > 0` ...
使用LIKE模式匹配时,如果模式是以通配符开头(如`'%abc'`),则索引可能不会被有效利用,因为Oracle无法确定哪些行可能匹配该模式。 **解决办法**: - 如果可能,尽量避免使用以通配符开头的模式。 - 考虑使用全文...
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
这四个函数在用法上与 Oracle SQL 函数 LIKE、INSTR、SUBSTR 和 REPLACE 用法相同,但它们使用 POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。 POSIX 正则表达式由标准的元字符(metacharacters)所...
推荐方案:用其它相同功能的操作运算代替,如 a is not null 改为 a>0 或 a>’’ 等。建立位图索引(有分区的表不能建,位图索引比较难控制,如字段值太多索引会使性能下降,多人更新操作会增加数据块锁的现象)。 ...
在处理LIKE操作时,尽量使用instr函数代替,因为instr的处理速度通常更快。LIKE操作在处理模式匹配时可能涉及全表扫描,而instr可以直接定位字符串位置。 Union操作在合并结果集时会去除重复项,这可能导致排序和...
- 如果`bonus`为NULL,则用0代替,并计算新的薪水值。 4. **NULL值处理** - **功能**:处理NULL值。 - **示例**:在更新表时,如果`bonus`列包含NULL值,使用`NVL()`函数可以避免错误发生。 - **解释**:在...