在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来。这个时候查询的效率就显得很重要!

一般情况下like模糊查询的写法为(field已建立索引):

SELECT `column` FROM `table` WHERE `field` like '%keyword%';

上面的语句用explain解释来看,SQL语句并未用到索引,而且是全表搜索,如果在数据量超大的时候,可想而知最后的效率会是这样

对比下面的写法:

SELECT `column` FROM `table` WHERE `field` like 'keyword%';

这样的写法用explain解释看到,SQL语句使用了索引,搜索的效率大大的提高了!

但是有的时候,我们在做模糊查询的时候,并非要想查询的关键词都在开头,所以如果不是特别的要求,"keywork%"并不合适所有的模糊查询

这个时候,我们可以考虑用其他的方法

1.LOCATE('substr',str,pos)方法

SELECT LOCATE('xbar',`foobar`);

###返回0SELECT LOCATE('bar',`foobarbar`);

###返回4SELECT LOCATE('bar',`foobarbar`,5);

###返回7

备注:返回 substr 在 str 中第一次出现的位置,如果 substr 在 str 中不存在,返回值为 0 。如果pos存在,返回 substr 在 str 第pos个位置后第一次出现的位置,如果 substr 在 str 中不存在,返回值为0。

SELECT `column` FROM `table` WHERE LOCATE('keyword', `field`)>0

备注:keyword是要搜索的内容,field为被匹配的字段,查询出所有存在keyword的数据

2.POSITION('substr' IN `field`)方法

position可以看做是locate的别名,功能跟locate一样

SELECT `column` FROM `table` WHERE POSITION('keyword' IN `filed`)

3.INSTR(`str`,'substr')方法

SELECT `column` FROM `table` WHERE INSTR(`field`, 'keyword' )>0

除了上述的方法外,还有一个函数FIND_IN_SET

FIND_IN_SET(str1,str2):

返回str2中str1所在的位置索引,其中str2必须以","分割开。

SELECT * FROM `person` WHERE FIND_IN_SET('apply',`name`);

mysql的搜索效率_Mysql模糊查询like效率,以及更高效的写法相关推荐

  1. mysql高效率写法_Mysql模糊查询like效率,以及更高效的写法

    在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来.这个时候查询的效率就 ...

  2. mysql like 贪婪匹配_mysql模糊查询like与REGEXP的使用详细介绍

    前言 在mysql中实现模糊查询的有like和regexp.本文通过实例代码给大家详细介绍这两者的使用方法,下面来跟着小编一起学习学习吧. like模式 like意思是长得像,有两个模式:_和% _表 ...

  3. MySQL like 通配符是_MySql模糊查询like通配符使用详细介绍

    MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi.grep和sed的扩展正则表达式模式匹配的格式. 一.SQL模式 SQL的模式匹配允许你使用"_"匹配任何 ...

  4. c3p0 参数 模糊查询_MySQL模糊查询用法大全(正则、通配符、内置函数等)

    文章来源:MySQL模糊查询用法大全(正则.通配符.内置函数等) 原文作者:陈哈哈 来源平台:CSDN SELECT * from table where username like '%陈哈哈%' ...

  5. mysql5.7通配符_MySQL模糊查询用法大全(正则、通配符、内置函数)

    SELECT * from table where username like '%陈哈哈%' and hobby like '%牛逼' 这是一条我们在MySQL中常用到的模糊查询方法,通过通配符%来 ...

  6. MySQL单表多字段模糊查询

    今天工作时遇到一个功能问题:就是输入关键字搜索的字段不只一个字段,比如 我输入: 超天才 ,需要检索出 包含这个关键字的 name . company.job等多个字段.在网上查询了一会就找到了答案. ...

  7. MySQL 数据库 like 语句通配符模糊查询小结

    MySQL 报错:Parameter index out of range (1 > number of parameters, which is 0)--MySQL 数据库 like 语句通配 ...

  8. mysql 关键字搜索 排名_mysql 的 查找 与 排序

    mysql 的 查找 : SELECT name,age FROM mytable; # 在mytable 中所有的name,age 数据 SELECT name,age FROM mytable W ...

  9. 前端实现搜索功能和模糊查询

    前端实现搜索功能和模糊查询 功能介绍: 在前端实现搜索,获取数据部分可以用ajax来实现,动态生成li标签,正则表达式实现的模糊查询 js实现代码: // $("#BA_2307596970 ...

最新文章

  1. UDF、UDAF、UDTF函数编写
  2. 0318互联网新闻 | Snapchat下月进军游戏平台;阿里巴巴将上线二哈智能防骚扰电话的应用程序...
  3. IOS成长之路-检测耳机插入/拔出
  4. 11计算机,11-计算机科学与技术
  5. usb3.0 linux无法识别,USB3.0接口不能识别U盘的解决方法
  6. java获取json中某个字段
  7. 深入理解HDFS:Hadoop分布式文件系统
  8. 【C语言】输入一个三位数,逆序输出
  9. 二十一天学通VC++之创建用户界面线程
  10. 「洛谷3469」「POI2008」BLO-Blockade【Tarjan求割点】
  11. MySql 数据类型 - 整型
  12. 大佬们用代码写的故事
  13. CSS绝对定位absolute详解
  14. 关于爱情的英文经典名言
  15. NVML编译官方用例报错
  16. 什么是Socks5代理?
  17. wireshark https 抓包
  18. Windows:MULTIPROCESSOR CONFIGURATION NOT SUPPORTED蓝屏(32位(win10/LTSC 2019/LTSC 2021))
  19. 深圳打卡(四) 红树林与深圳湾公园
  20. 【跨年】《2020年跨年演讲合集-吴晓波、罗振宇、丁祖昱等》(附下载链接)...

热门文章

  1. 搭建Hexo博客(一)-创建Hexo环境
  2. PHP基础班初学感悟
  3. Python语言学习笔记
  4. hdu 3999The order of a Tree
  5. 机器学习与数据挖掘简介
  6. StringBuilder初始化容量以及扩容机制(源码分析)
  7. Leetcode--289. 生命游戏
  8. 一元多项式的建立及加减
  9. linux里工作目录的字体变蓝,netterm访问Linux时字体和背景颜色随目录发生改变的问题解决...
  10. python 同时发多个请求_PythonWebServer如何同时处理多个请求