`

索引与优化like查询

 
阅读更多

1. like %keyword    索引失效,使用全表扫描。但可以通过翻转函数+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 值的降低。

分享到:
评论

相关推荐

    PostgreSQL Like模糊查询优化方案

    综上所述,优化PostgreSQL中的LIKE模糊查询涉及多种策略,包括使用全文搜索、相似度查询、优化索引结构以及调整查询计划。针对具体的应用场景和数据特性,结合这些方法,可以显著提升查询效率,降低数据库的负载,...

    解决MySql大数据Like查询慢的问题

    总结,优化MySQL中的LIKE查询需要综合考虑查询语句的优化、索引的合理使用以及在应用程序层面进行预处理。结合JAVA模拟LIKE的策略,可以在不改变原有查询逻辑的情况下,显著提高查询效率。在实践中,应根据具体业务...

    MySQL全文索引、联合索引、like查询、json查询速度哪个快

    本文将深入探讨全文索引、联合索引、LIKE查询以及JSON查询这四种不同方法在实际应用中的速度比较,并通过实例进行详细解析。 首先,全文索引(Full-text Index)是MySQL提供的一种特殊类型的索引,专门用于提高全文...

    oracle数据库索引与sql的优化

    ### Oracle数据库索引与SQL优化 在Oracle数据库的日常管理和维护过程中,索引与SQL语句的优化是非常重要的环节。合理的索引设计和高效的SQL编写能够显著提高数据查询的速度、减少系统资源消耗,并最终提升整个...

    ORACLE索引详解及SQL优化

    此外,了解并运用Oracle的索引优化特性也很重要,如索引组织表(Index-Organized Table, IOT)、覆盖索引(Covering Index)以及物化视图(Materialized View)等。 总的来说,Oracle索引详解及SQL优化是一个深度...

    oracle like 的优化

    **优化方法**:当LIKE模式不以“%”开头时,Oracle可以有效地利用索引来加速查询。例如,对于`LIKE 'XYZ%'`的情况,如果字段`object_name`上已经建立了索引,则查询可以直接利用这个索引。 **示例代码**: ```sql ...

    基于索引的SQL语句优化

    15. **基于函数的索引要求等式匹配**:基于函数的索引只在函数调用与索引定义完全匹配时才有效,所以要确保查询中的函数调用与索引一致。 16. **使用分区索引**:对于大量数据,使用分区策略可以将大表划分为较小的...

    数据库索引设计与优化

    **索引优化策略**: 1. **使用EXPLAIN分析查询**:理解查询执行计划,检查是否使用了索引。 2. **避免全表扫描**:尽量让查询能利用到索引,减少全表扫描。 3. **避免索引失效**:避免在索引列上使用NOT、!=、、IN...

    数据库索引设计与优化,数据库必学经典

    四、索引优化策略 1. 使用覆盖索引:如果查询只需要索引中的信息,覆盖索引可以让数据库避免回表,提高性能。 2. 避免索引失效:避免在索引列上使用非等值比较操作(如LIKE、BETWEEN)或函数,这可能导致索引无法被...

    利用reverse索引优化like语句的方法详解

    总结一下,`REVERSE`函数索引的优化方法是将原本无法利用索引的前% LIKE查询转化为可以利用索引的后% LIKE查询。这种优化策略尤其适用于那些频繁进行前% LIKE查询且数据量较大的场景,能够显著提高查询性能,减少...

    pgsql查询优化之模糊查询实例详解

    前言 一直以来,对于搜索时模糊匹配...然后搜个简单的模糊匹配条件如 LIKE “血常规%”,可以发现查询计划生成如下,索引并没有被使用上,这是因为传统的btree索引并不支持模糊匹配 查阅文档后发现,pgsql可以在Btree

    索引的SQL语句优化

    11. **like子句尽量前端匹配**:当使用`LIKE`进行模糊查询时,确保模式字符串的开头固定,以便更有效地使用索引。 12. **用Case语句合并多重扫描**:在某些情况下,使用`CASE`语句可以减少对多个表的多次扫描,提高...

    MySQL 索引及优化实战1

    针对索引优化,有一些规则可遵循: 1. 模糊查询优化:前导模糊查询(如`'%XX'`)无法使用索引,而非前导模糊查询(如`'XX%'`)可以。避免在查询中使用左模糊或全模糊,如果需要,可以考虑使用全文搜索引擎。 2. `...

    SQLServer索引的优化

    为了验证索引优化的有效性,本文采用如下测试环境: - 主机:基于AMD的兼容机 - 主频:450MHz - 内存:65MB - 操作系统:Windows 2000 - 数据库版本:SQL Server 7.0 - 数据表名称:`Teacher` - 表结构:`t-id`, `t-...

    mysql索引优化.rar

    通过深入理解这些索引优化策略,并结合实际的数据库结构和查询模式,你可以有效地调整和设计MySQL索引,从而提高系统的整体性能。这份"mysql索引优化"资料包将是你宝贵的参考资料,帮助你在实践中实现数据库的高效...

    优化sql查询速度

    - **优化 JOIN 操作**:合理选择 JOIN 类型,并确保参与 JOIN 的字段有合适的索引,这可以显著提高查询效率。 - **使用子查询代替连接**:在某些情况下,使用子查询代替连接可以减少 I/O 操作次数,从而提高查询速度...

    百万数据查询优化海量数据查询优化

    - **消除顺序存取**:在嵌套查询中,尽量避免对大型表的顺序存取,通过建立合适的索引和使用并集来优化查询路径。 - **避免子查询**:减少子查询的使用,尤其是相关子查询,因为它们可能导致多次查询。如果必须...

    mysql之Linux安装,重点是索引的优化笔记

    ### MySQL之Linux安装与索引优化笔记 #### 一、MySQL简介及Linux版安装 **1. MySQL概述** MySQL是一种关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前属于Oracle公司。它是一种开源软件,因其性能...

Global site tag (gtag.js) - Google Analytics