一般情况下,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号 中国互联网协会会员