使用Oracle的instr函数与索引配合提高模糊查询的效率 一般来说,在Oracle数据库中,我们对tb表的name字段进行模糊查询会采用下面两种方式:1.select * from tb where name like '%XX%';2.select * from tb where instr(name,'XX')>0; 若是在name字段上没有加索引,两者效率差不多,基本没有区别. 为提高效率,我们在name字段上可以加上非唯一性索引:create index idx_tb_name on…
in in可以分为三类: 一. 形如select * from t1 where f1 in ( &apos:a &apos:, &apos:b &apos:),应该和以下两种比较效率 select * from t1 where f1= &apos:a &apos: or f1= &apos:b &apos: 或者 select * from t1 where f1 = &apos:a &apos: union all se…
instr(title,'手册')>0 相当于 title like '%手册%' instr(title,'手册')=1 相当于 title like '手册%' instr(title,'手册')=0 相当于 title not like '%手册%' t表中将近有1100万数据,很多时候,我们要进行字符串匹配,在SQL语句中,我们通常使用like来达到我们搜索的目标.但经过实际测试发现,like的效率与instr函数差别相当大.下面是一些测试结果: SQL> set timi…
--条件比较 /* =,!=,<>,<,>,<=,>=, any,some,all is null,is not null between x and y in(list),not in(list) exists(sub-query) like _ ,%,escape ‘\‘ _\% escape ‘\’ */ --any some 只要满足其中的任何一个即可 SELECT E.ENAME ,E.JOB,E.SAL FROM EMP E WHERE E.SAL >…
浅谈sql中的in与not in,exists与not exists的区别 1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的.如果查询的两个表大小相当,那么用in和exists差别不大:如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in: 例如:表A(小表),表B(大表) select * from A where cc in(se…