首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL模糊查询性能优化

结论写在最前面 用户基数估计 模糊查找接口qps估计 数据检索量估计 支持分布式搜索 支持短语搜索 支持分词 上述每一项都将是决定我们模糊查询最终的实现方案 业务场景分析 根据 模糊查找 的业务场景,比对一下上面列出的...就是KM和TAPD那种效果: [1526286645_33_w419_h273.png] --- 首先KM和TAPD都是通过后台给前端生成一个js文件,由前端去做模糊查找,这样比较经济实惠,没有后台查询损耗...Staffs表结构&查询接口 将员工数据导入到MySQL之后,共有 59066 条数据,大家重点关注 rtx,pinyin,chn_name 这三个字段,其他都是辅助字段,不参与查询业务。...%查询中文名字段; 关键字查询接口返回结果做Redis缓存,缓存时间为120分钟; 所以我的解决方式:使用全文索引优化rtx和拼音的模糊查询,中文的模糊查询继续使用**LIKE %%**,最后再加一个Redis...Sphinx 如果你和我一样,数据源存放在MySQL,可是使用:Sphinx ; 其实咱们KM早期就是使用Sphinx实现全文检索查询的,Sphinx可以非常容易的与SQL数据库和脚本语言集成。

32.1K2216
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    MySQL 报错:Parameter index out of range (1 > number of parameters, which is 0)——MySQL 数据库 like 语句通配符模糊查询小结...文章目录 MySQL 报错:Parameter index out of range (1 > number of parameters, which is 0)——MySQL 数据库 like 语句通配符模糊查询小结...前言 一、分析 SQL 语句 1.1、普通 SQL 语句的查询分析 1.2、普通 SQL 查询语句如何处理 1.3、使用 like 通配符模糊查询语句分析 二、like 语句使用通配符模糊查询剖析 2.1...、like 语句的应用场景 2.2、模糊查询剖析 2.3、正确语句 三、MyBatis like 模糊查询及关键字区分 总结 ---- 前言 今天在使用 MySQL 语句执行增删改查操作时,控制台报出了以下错误...二、like 语句使用通配符模糊查询剖析 2.1、like 语句的应用场景 使用 like 通配符进行模糊查询是我们在项目中常遇到的,比如在搜索框中对于数据的模糊查询

    14.8K40

    Mysql 模糊查询 like 语句

    mysql模糊查询like语句 like语句用于模糊查询符合条件的语句 %代表 若干个字符 _代表一个单词 查询使用like语句的语法是: select 字段名 from 表名 where 字段名...like '需要模糊查询的对象' 如果需要查询第二位字母是q的字段,那么like后面可以跟'_q%' 如果需要模糊查询的字符当中有'_',那么可以使用转义字符。...如果需要查询第二位字符是_的字段,那么like后面可以跟 '__%' 例如,我们现在有如下的一张表 +-------+--------+----------+------+------------+-...'M' 的人的姓名的时候,我们可以使用以下语句进行查询。...select ename from emp where ename like '_m%'; 使用上述语句查询的结果为 +-------+ | ename | +-------+ | SMITH | +-

    5.2K30

    mysql查询优化方法_MySQL查询优化

    :索引没有设计好、SQL 语句没写好、MySQL 选错了索引 ’mysql查询优化 第一步:开启mysql查询日志,通过慢查询日志定位到执行较慢的SQL语句。...第二步:利用explain关键字可以模拟优化器执行SQL查询语句,来分析SQL查询语句。 第三步:通过查询的结果进行优化。...优化方式 (1)首先分析语句,看看是否包含了额外的数据,可能是查询了多余的行并抛弃掉了,也可能是加了结果中不需要的列,要对SQL语句进行分析和重写。...MySQL 执行计划的局限: 只是计划,不是执行 SQL 语句,可以随着底层优化器输入的更改而更改 EXPLAIN 不会告诉显示关于触发器、存储过程的信息对查询的影响情况 EXPLAIN 不考虑各种...,使用 system NULL MySQL优化过程中分解语句,执行时甚至不用访问表或索引 从上到下,性能从差到好,一般来说需要保证查询至少达到 range 级别, 最好达到 ref ---- key

    14.3K40

    如何加快MySQL模糊匹配查询

    有时我会看到条件如下的模式匹配查询:“其中的字段名像'%something%'”。 MySQL不能为这些查询使用到索引,这意味着它必须每次都进行一次全表扫描。...通过以下查询,我们可以使用n.pierre查找所有email地址: ? ? 它不必读取整个表格,但仍需要读取很多行,甚至使用filesort。...由于前导%,MySQL不能使用索引。 我们如何避免这种情况? 让我们保存我们可能要查找的email地址的所有可能版本。 短路方法 ? 嗯...可以工作吗? 我们来测试一下。...结论 如果MySQL中没有内置的解决方案或索引可以帮助或解决您的问题,请不要放弃。很多时候,只需稍作修改,您就可以创建自己的索引表或使用其他技巧。...在这种特殊情况下,如果您愿意牺牲一些额外的磁盘空间,您可以使用正确的方法加快查询速度。 Trigram并不是最好的选择,但我可以看到可能更好的用例。

    3.7K50

    mysql模糊查询的方法

    Mysql模糊查询正常情况下在数据量小的时候,速度还是可以的,但是不容易看出查询的效率,在数据量达到百万级,千万级的甚至亿级时 mysql查询的效率是很关键的,也是很重要的。...一、一般情况下 like 模糊查询的写法:前后模糊匹配 这个SQL语句,如果用explain解释的话,我们很容易就能发觉它是没有走索引搜索,而是对全表进行了扫描,这显然是很慢的,还有卡库的可能。...如果将上面的SQL语句改成下面的写法: 就是把‘keyword’前面的%去掉了,这样的写法用explain解释看到,SQL语句使用了索引,这样就可以大大的提高查询的效率。...有时候,我们在做模糊查询的时候,并非要想查询的关键词都在开头,所以如果不是特别的要求,”keywork%”并不合适所有的模糊查询。...二、模糊查询高效的方法: 1、LOCATE(’substr’,str,pos)方法 解释:返回 substr 在 str 中第一次出现的位置,如果 substr 在 str 中不存在,返回值为 0 。

    2.7K50

    MySQL查询优化

    可以使用show processlist命令查看当前Mysql在进行的线程,包括线程的状态,是否锁表等,可以实时查看SQL的执行情况,同时对一些锁表进行优化。...数据库优化方向 (1)、根据服务层面:配置mysql性能优化参数 (2)、从系统层面增强mysql的性能:优化数据表结构、字段类型、字段索引、分表,分库、读写分离等等 (3)、从数据库层面增强性能:...优化分页查询 一般分页查询,通过创建覆盖索引能较好地提高性能。...但若排序字段出现大量重复,不适用这种方式优化MySQL常用技巧 正则表达式的使用 序列 序列说明 ^ 字符串的开始处进行排序 $ 在字符串的末尾处进行匹配 ....优化数据库对象 优化表类型 表需要使用何种数据类型工具应用来判断,虽然考虑字段的长度会有一定的冗余,但是不推荐让很多字段都留有大量的冗余,这样既浪费磁盘的存储空间,同时在应用操作时也浪费物理内存MySQL

    1.5K20

    MySQL查询优化

    可以使用show processlist命令查看当前Mysql在进行的线程,包括线程的状态,是否锁表等,可以实时查看SQL的执行情况,同时对一些锁表进行优化。...数据库优化方向 (1)、根据服务层面:配置mysql性能优化参数 (2)、从系统层面增强mysql的性能:优化数据表结构、字段类型、字段索引、分表,分库、读写分离等等 (3)、从数据库层面增强性能:...优化分页查询 一般分页查询,通过创建覆盖索引能较好地提高性能。...但若排序字段出现大量重复,不适用这种方式优化MySQL常用技巧 正则表达式的使用 序列 序列说明 ^ 字符串的开始处进行排序 $ 在字符串的末尾处进行匹配 ....优化数据库对象 优化表类型 表需要使用何种数据类型工具应用来判断,虽然考虑字段的长度会有一定的冗余,但是不推荐让很多字段都留有大量的冗余,这样既浪费磁盘的存储空间,同时在应用操作时也浪费物理内存MySQL

    1.5K10

    mysql查询优化

    查询效能极低,并且请求次数过多的话很可能会因为这一个慢sql把你整个系统拖垮,不能正常对外提供服务 ------ 二、带着疑问去优化 其实优化手段从业务层面上看很单一,也就是通过给字段添加索引,相信很多人都听过...sql优化加索引能提高查询效率,但是很少去思考跟索引相关的一些问题,比如 索引什么时候会生效?...等等一系列的问题 ------ 三、mysql优化手段 回表和覆盖索引 回表操作数据准备 create table t1 (id int primary key, k int, s varchar(...也就是说,在这个查询里面,索引 k 已经“覆盖了”我们的查询需求,我们称为覆盖索引。由于覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是一个常用的性能优化手段。 联合索引 a....会先把name和id两列的值查询出来,放入到sort_buffer中 2. 根据sort_buffer中的数据进行name排序 3. 在根据id去回表 c. 优化 1.

    1.3K10

    MySQL查询优化

    数据库MySQL是web应用的组成部分,也是决定其性能的重要部分。所以提升MySQL的性能至关重要。      MySQL性能的提升可分为三部分,包括硬件、网络、软件。...软件又细分为很多种,在这里我们通过MySQL查询优化从而达到性能的提升。      最近看了一些关于查询优化的书籍,同时也在网上看一些前辈们写的文章。...11、博文总结   经过这些天查资料敲代码的学习,了解到了MySQL查询优化并不是简简单单的按照某个公式某个规则就可达到的。...实验是检验标准的唯一标准,经过这几天的测试,得出的结论就是:MySQL查询优化是有大方向,但是想要得出一个万能优化公式那是不可能的,毕竟每一条SQL查询语句的写法、结果着重点、以及表的字段环境都不一样...能够达到看SQL查询语句就能得出优化方法的大神,必定是仔细研究过SQL查询优化并且有过好几年优化经验的老鸟。哈哈,我还只是个小菜鸟。

    2K30

    MySQL 查询优化

    写入比较频繁的时候,不能开启MySQL查询缓存,因为在每一次写入的时候不光要写入磁盘还的更新缓存中的数据。 10. 建索引的目的: 1)加快查询速度,使用索引后查询有迹可循。...使用count统计数据量的时候建议使用count()而不是count(列),因为count()MySQL是做了优化的。 16....什么时候开MySQL查询缓存,交易系统(写多、读少)、SQL优化测试,建议关闭查询缓存,论坛文章类系统(写少、读多),建议开启查询缓存。 18. Explain 执行计划只能解释SELECT操作。...查询优化可以考虑让查询走索引,走索引能提升查询速度,索引覆盖是最快的,如下就是让分页走覆盖索引提高查询速度。...如果MySQL估计使用全表扫描要比使用索引快,则不使用索引。 26. 使用UNION ALL 替换OR多条件查询并集。 27.

    3.8K111

    Mysql全文索引实现模糊查询

    导语 基本上所有的产品都离不开模糊搜索,无论是C端的社交产品、或者B端的一些SaaS服务。...众所周知的问题是,LIKE命令在数据量大的时候性能特别低,甚至大数据量下的一个LIKE查询可以拖垮整个DB,这是因为LIKE语句是不能利用索引的。...如果也借用ES这一套来做当然是可以的,但是从开发时间和精力的角度,显然有点得不偿失,那么在这种场景下,我们如何实现模糊搜索。...ngram_token_size设置的是查询的单词最小字数,也就是如果在默认值是2的情况下,搜索单字是得不到任何结果的。譬如上单独搜索'今','天','真','好'这四个字都是拿不到结果的。...8 | 昨天天气真好 | NULL | | 9 | 昨天天气真好 | NULL | +----+-----------------------+------+ 查询语句

    13.2K41

    MySql查询性能优化

    优化关联查询MySql中,任何一个查询都可以看成是一个关联查询,即使只有一个表的查询也是如此。...此外,确保任何的GROUP BY和ORDER BY中的表达式只涉及到一个表中的列,这样才能使用索引来优化这个过程。 临时表的概念 上面提到在MySql中,任何一个查询实质上都是一个关联查询。...MySql的临时表是没有任何索引的,在编写复杂的子查询和关联查询的时候需要注意这一点。 临时表也叫派生表。 排序优化 应该尽量让MySql使用索引进行排序。...所以让MySql根据索引构造排序结果非常的重要。 子查询优化 MySql的子查询实现的非常糟糕。最糟糕的一类查询是WHERE条件中包含IN()的子查询语句。...LIMIT的优化问题,其实是OFFSET的问题,它会导致MySql扫描大量不需要的行然后再抛弃掉。

    2K40

    Mysql常用sql语句(9)- like 模糊查询

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 like应该是最常用的查询条件了 必须滴掌握!...% 通配符查询的栗子 应该是最常用的通配符了,它代表任意长度的字符串,包括0 % 比如: 表示以字母 a 开头,以字母 b 结尾的任意长度的字符串;该字符串可以代表 ab、acb、accb、accrb...等字符串 a%b 查询username字段包含test的记录 select * from yyTest where username like "%test%"; ?...%,可以使用 转义符 \ 实际场景:搜索功能,搜索框只输入%看是否返回所有记录,如果是的话证明没有做转义可以提个优化项哦!...binary关键字的话,大小写是不敏感的 注意头部、尾部多余的空格: 是不会匹配到“test1”的 " test% " 注意NULL:通配符是不能匹配到字段为NULL的记录的 不要过度使用通配符:因为Mysql

    2.7K20

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券