详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt101
索引与优化like查询
2. like keyword% 索引有效。
3. like %keyword% 索引失效,也无法使用反向索引。
====================================================================
1. 使用下面的函数来进行模糊查询,如果出现的位置〉0,表示包含该字符串。
查询效率比like要高。
如果: table.field like ‘%AAA%’ 可以改为 locate (‘AAA’ , table.field) > 0
LOCATE(substr,str)
POSITION(substr IN str)
返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0。
使用instr
select count(*) from table t where instr(t.column,’xx’)> 0
这种查询效果很好,速度很快。
2. 查询%xx的记录
select count(c.c_ply_no) as COUNT
from Policy_Data_All c, Item_Data_All i
where c.c_ply_no = i.c_ply_no
and i.C_LCN_NO like ’%245′
在执行的时候,执行计划显示,消耗值,io值,cpu值均非常大,原因是like后面前模糊查询导致索引失效,进行全表扫描
解决方法:这种只有前模糊的sql可以改造如下写法
select count(c.c_ply_no) as COUNT
from Policy_Data_All c, Item_Data_All i
where c.c_ply_no = i.c_ply_no
and reverse(i.C_LCN_NO) like reverse(‘%245′)
使用翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全扫描。有效降低消耗值,io值,cpu值这三个指标,尤其是io值的降低。
相关推荐
前言 一直以来,对于搜索时模糊匹配...然后搜个简单的模糊匹配条件如 LIKE “血常规%”,可以发现查询计划生成如下,索引并没有被使用上,这是因为传统的btree索引并不支持模糊匹配 查阅文档后发现,pgsql可以在Btree
主要介绍了关于利用reverse索引优化like语句的方法,文中通过图文介绍的很详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
oracle like 的优化,使用索引、反向索引
1.1 单表的查询索引的执行过程及优化-普通查询 1.2 单表查询索引的执行过程以及优化-普通查询+排序或分组 1.3 多表查询-连接查询索引的执行过程及优化 1.4 多表查询-连接查询代替子查询 2 索引失效 2.1like后面的...
文章目录慢查询慢查询配置慢查询解读慢查询工具mysqldumpslowpt_query_digest索引聚簇索引跟非聚簇索引聚簇索引非聚簇索引:覆盖索引(Covering Index)总结:重点执行计划执行计划详解重点 MySQL优化参考 ...
使用场景: 1. 要求LIKE '%xxx%'模糊查询支持索引,提高数据检索速度 2. 在上一场景的基础上,实现了对多个OR条件语句的索引查询支持
like ''a%'' 使用索引 like ''%a'' 不使用索引用 like ''%a%'' 查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型,而是VARCHAR。对于字段的值很长的建全文索引。 9、DB Server 和APPLication Server ...
3、索引失效场景(补充:以下在实际应用中并不会一定导致索引失效,基于mysql不同版本的优化规则) 3.1 在联合索引的场景下,查询条件不满足最左匹配原则 3.2 索引列参与了运算,会导致全表扫描,索引失效(除主键...
1.1.8. 策略8.Like查询要当心 7 1.1.9. 策略9.字符类型加引号 8 1.1.10. 策略10.OR改UNION效率高 9 1.1.11. 测试题 9 1.2. 批量导入 11 1.2.1. insert语句优化; 11 1.2.2. LOAD DATA INFLIE 11
上面这条语句完全可以查询出是否有Bill Cliton这个员工,但是这里需要注意,系统优化器对基于last_name创建的索引没有使用。 当采用下面这种SQL语句的编写,Oracle系统就可以采用基于last_name创建的索引。 **...
问题:明明建立了索引,为何Like模糊查询速度还是特别慢? Like是否使用索引? 1、like %keyword 索引失效,使用全表扫描。但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描。 ...
第七掌 索引提高数据分布不均匀时查询效率 5 第八掌 利用HINT强制指定索引 6 第九掌 屏蔽无用索引 6 第十掌 分解复杂查询,用常量代替变量 7 第十一掌 like子句尽量前端匹配 7 第十二掌 用Case语句合并多重扫描 7 第...
LIKE可以应用通配符查询,里面的通配符组合可能达到几乎是任意的查询,但是如果用得不好则会产生性能上的问题,如LIKE ‘%5400%’ 这种查询不会引用索引,而LIKE ‘X5400%’则会引用范围索引。性能肯定大大提高。...
2.5 索引使用优化 16 2.5.1 避免在索引列上使用函数或运算 16 2.5.2 避免改变索引列的类型. 17 2.5.3 避免在索引列上使用NOT 17 2.5.4 用>=替代> 18 2.5.5 避免在索引列上使用IS NULL和IS NOT NULL 18 2.5.6 带...
上面这条语句完全可以查询出是否有Bill Cliton这个员工,但是这里需要注意,系统优化器对基于last_name创建的索引没有使用。 当采用下面这种SQL语句的编写,Oracle系统就可以采用基于last_name创建的索引。 **...
可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。 explain关键字的使用方法很简单,就是把它放在select查询语句的前面。 mysql查看是否使用索引,简单的看type类型就可以。...
SQL优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能...优化like语句等这样那样的问题。 作为数据开发人员,对SQL的优化,应该是我们必备的技能才是,熟练掌握它,让你的SQL代码快到飞起~~~
如果查询中包含了子查询,那么注意首先优化子查询 注意关联子查询,尽量减少关联子查询的使用,因为它的代价很高,并且非常消耗CPU 在Sql语句中使用not exists 代替 not in 用表连接替换EXISTS 使用带有前导字段的...
like查询前面部分未输入,以%开头无法命中索引。 可以使用覆盖索引(type=index)。 场景三:SELECT * FROM user_info WHERE id 1; 查询条件使用不等式(或者!=)。 场景四:SELECT * FROM user_info WHERE name = 1...
mysql 索引详解: 在mysql 中,索引可以分为两种类型 hash索引和 btree索引。...比如: order_sn like ‘134%’ 这样可以使用到索引。 4.匹配范围值查询 createTime>’2015-01-09′ and createTime<‘2