一般情况下,sql中使用col_name like 'ABC%‘的情况才能使用到col_name字段上的索引。那么如果是col_name like '%ABC%'的情况,能否使用索引呢?

答案是:可以使用索引,但是需要改写SQL并创建reverse函数索引。 Create index idx_t1_reverse2 on t1(reverse(substr(object_name,1,length(object_name)-4))); select object_id,object_name,object_type from t1 where reverse(substr(object_name,1,length(object_name)-4)) like reverse('%TAB_COL');

情况3、这种情况需要like的字段上存在普通索引,主要在SQL的写法上做改进。

原来的SQL是这样写的: Select object_id,object_type,object_name from t1 where object_name like '%ABC%‘;

改写后的SQL是这样的: Select object_id ,object_type,object_name from t1 Where object_name in (select object_name from t1 where object_name like ‘%ABC%’);

Test Case: ............................................................................................................................... ● 本文转载自 老虎刘谈SQL优化,感谢 刘永甫专家的奉献 ● 本文在itpub( http://blog.itpub.net/26736162 )、博客园( http://www.cnblogs.com/lhrbest )和个人微信公众号( xiaomaimiaolhr )上有同步更新 ● 本文itpub地址: http://blog.itpub.net/26736162/abstract/1/ ● 本文博客园地址: http://www.cnblogs.com/lhrbest ● 本文pdf版及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/ ● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ● QQ群: 230161599 微信群:私聊 ● 联系我请加QQ好友(646634621),注明添加缘由 ● 于 2017-05-09 09:00 ~ 2017-05-30 22:00 在魔都完成 ● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解 ............................................................................................................................... 拿起手机使用 微信客户端 扫描下边的 左边 图片来关注小麦苗的微信公众号: xiaomaimiaolhr,扫描 右边 的二维码加入小麦苗的QQ群, 学习最实用的数据库技术。

【QQ:646634621】【微信:db_bao】【微信公众号:DB宝】【QQ群:230161599】【Oracle OCP、OCM、高可用(RAC+DG+OGG)、MySQL OCP、PGCA+PGCE+PGCM等都可以找麦老师了】【个人网站:xmmup.com】

注册时间: 2012-09-23

10734898

广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员