- 浏览: 595711 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
索引与优化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值的降低。
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值的降低。
发表评论
文章已被作者锁定,不允许评论。
-
sql 查询一些基础数据(不经常变)关联关系时可以把关联关系写入到表中
2018-04-16 15:18 435原来的查询语句 FROM table1 t LEFT ... -
sql 最小化表查询次(col1,col2) = (select col1,col2 from t)
2018-01-02 16:51 553最小化表查询次数 ... -
sql 用inner join取代in和exists
2018-01-02 16:48 1153使用表连接替换EXISTS ... -
oracle HINT详解
2017-09-01 10:42 520ORACLE的HINT详解 hints是oracle提供的 ... -
oracle jdbctemplate如何优化查询速度
2017-08-21 09:33 13201.设置setFetchSize进行优化 // 可以优化 ... -
oracle Parallel模式-Parallel用法(/*+PARALLEL(n)*/)
2017-08-18 16:48 19001.用途 强行启用 ... -
oracle where条件分支查询
2016-06-30 16:16 523select * from test xx where ... -
oracle 重复数据处理的sql整理
2016-06-22 14:44 398Oracle 删除重复数据只留一条 1、查找表中多余的重 ... -
oracle 常用sql语句积累
2016-01-28 11:01 5711.删除重复列 delete from t t1 where ... -
oracle 表中有子父关系列则使用CONNECT BY PRIOR
2014-10-27 10:08 421查询名字为xx xxx的所有子数据 SELECT re.U ... -
oracle 删除大量数据后整理表(analyze table xxx compute statistics)
2014-10-17 18:09 22291. DELETE 后 TRUNCATE TABLE ; 然 ... -
oracle 高效Sql语句总结
2014-10-08 11:23 504No SQL,No cost. SQL语句是造成数据库 ... -
oracle join关键字使用总结
2014-06-17 13:57 5961.内连接:选出两个表中所有符合连接条件的row构成的集合。 ... -
sql order by与索引之间的关系(where条件出现字段才有效)
2014-06-15 20:00 660ORDER BY 通常会有两种实现方法,一个是利用有序索引自动 ... -
oracle exists 和not exists 用法详解
2014-06-15 16:17 537有两个简单例子,以说明 “exists”和“in”的效率问题 ... -
sql 数据库索引的使用规则
2014-06-15 14:49 1024使用索引前需要用explain查看下执行计划,然后根据基数是否 ... -
几种范式详解
2014-05-04 10:46 512数据库的设计范式是数 ... -
oracle sql语句优化总结
2013-06-19 16:45 6181.直接路径读方式 --直接路径读方式 drop ta ...
相关推荐
### SQL模糊查询并按匹配度排序 在数据库查询操作中,模糊查询是非常常见的一种需求,尤其是在需要处理大量数据且查询条件不确定的情况下。本篇文章将基于提供的SQL查询语句,详细介绍如何进行SQL模糊查询以及如何...
在SQL(Structured Query Language)中,`LIKE` 模糊查询是一种非常实用的功能,它允许用户根据特定的模式匹配数据库中的数据。这个功能在数据检索、分析和处理时尤其有用,尤其是在我们不确定确切的搜索词或者需要...
与LIKE语句不同,全文索引不仅在速度上有显著优势,还能支持模糊匹配和同义词搜索,这对于处理新闻文章、报告或其他含有大量文本信息的数据库特别有用。 在全文索引中,有几个关键术语需要理解: 1. **全文索引**...
3. **操作符**:某些操作符如`NOT`、`BETWEEN`、`LIKE`的模糊匹配可能导致索引失效,除非使用了前缀索引或全文索引。 4. **索引选择性**:索引的选择性越高,区分度越大,使用索引的效果越好。如果索引列的值过于...
在SQL Server中,全文索引是一种特殊类型的索引,主要用于提高文本数据的检索效率,尤其是在执行复杂模糊查询时。全文索引支持复杂的自然语言查询,能够帮助用户快速定位到含有特定词语或短语的数据记录。 #### 二...
与传统的基于B树结构的索引不同,全文索引专注于处理“包含”式查询,即查询字符串中是否包含特定的关键词,而不仅仅是以特定字符开头的查询。这种技术在搜索引擎和网站搜索功能中特别有用。 首先,要启用SQL ...
11. **like子句尽量前端匹配**:当使用`LIKE`进行模糊查询时,确保模式字符串的开头固定,以便更有效地使用索引。 12. **用Case语句合并多重扫描**:在某些情况下,使用`CASE`语句可以减少对多个表的多次扫描,提高...
### SQL优化、索引的建立和运用以及多表连接建索引的相关知识点 #### SQL优化概述 在数据库系统中,SQL语句的执行效率对于系统的响应时间和资源利用有着至关重要的影响。合理的SQL优化不仅可以显著提升查询速度,还...
CONTAINS谓词支持精确匹配和模糊匹配,以及使用通配符、范围操作符和语言规则进行复杂查询。FREETEXT则更加灵活,它能理解自然语言并识别同义词。 此外,还可以使用CONTAINSTABLE或FREETEXTTABLE函数返回一个临时表...
本文详细介绍了如何在SQL Server中实现多条件模糊匹配查询,这种方法在数据库查询和信息检索领域中非常重要,尤其是在复杂搜索条件下的应用。文章分别对单条件模糊匹配查询和多条件搜索的方法进行了阐述,并提出两种...
在SQL中,模糊匹配字符串通常使用LIKE运算符来实现。例如,SELECT * FROM 表名 WHERE 字段名 LIKE '%关键词%'。 在本文中,我们将详细介绍如何在SQL中生成查询的模糊匹配字符串。首先,我们需要创建一个辅助表来...
8. **ORDER BY与GROUP BY**:对于包含NULL值的索引列,优化器可能无法有效优化带有`ORDER BY`或`GROUP BY`的查询。 综上所述,合理利用索引可以显著提升数据库查询效率,但在设计索引时需要综合考虑多种因素,以...
在SQL(Structured Query Language)中,模糊查询是一种非常重要的功能,它允许我们使用通配符来匹配不完全或不确定的数据。这种查询方式在处理大量数据时尤其有用,比如在搜索关键词、查找类似记录或者进行数据清洗...
15. **基于函数的索引要求等式匹配**:基于函数的索引只在函数调用与索引定义完全匹配时才有效,所以要确保查询中的函数调用与索引一致。 16. **使用分区索引**:对于大量数据,使用分区策略可以将大表划分为较小的...
与LIKE语句不同,全文索引是根据特定语言的规则对词和短语进行搜索,因此更加精准高效。 #### 三、全文索引常用术语 1. **全文索引**: 存储有关重要词汇及其在文档中位置信息的一种特殊索引,用于快速全文查询。 2...
一直以来,对于搜索时模糊匹配的优化一直是个让人头疼的问题,好在强大pgsql提供了优化方案,下面就来简单谈一谈如何通过索引来优化模糊匹配 案例 我们有一张千万级数据的检查报告表,需要通过检查报告来模糊搜索...
创建基于trgm的索引后,我们可以使用ILIKE操作符进行模糊匹配,这将利用索引来加速查询。例如,`SELECT * FROM table WHERE column % 'xxx'`。 除此之外,考虑数据结构和业务逻辑也很重要。如果可能,尽量避免在...
sql学习 索引去哪儿_like与 %间一波三则的故事.sql
- `LIKE`操作符前缀匹配可利用索引,但模糊匹配则无法利用。 3. **索引提示(Hint)** 在SQL语句中使用`/*+ INDEX */`提示强制优化器使用特定的索引。 4. **索引的负面影响** - 索引占用额外的存储空间。 - ...