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

mysql like中文慢

基础概念

MySQL中的LIKE操作符用于在WHERE子句中进行模糊匹配。当使用LIKE操作符匹配中文字符时,可能会遇到性能问题,因为MySQL需要对每个字符进行逐个比较。

相关优势

  • 灵活性LIKE操作符提供了灵活的模糊匹配功能,可以匹配任意模式的字符串。
  • 简单易用:语法简单,易于理解和使用。

类型

  • 前缀匹配LIKE 'abc%'
  • 后缀匹配LIKE '%abc'
  • 任意位置匹配LIKE '%abc%'

应用场景

  • 搜索功能:在用户输入关键词时,进行模糊匹配以找到相关记录。
  • 数据过滤:根据特定模式过滤数据。

问题及原因

为什么MySQL LIKE中文慢?

  1. 字符集和排序规则:如果表中的字符集和排序规则不支持中文,MySQL需要进行额外的转换和处理,导致性能下降。
  2. 索引问题LIKE操作符通常无法有效利用索引,特别是在前缀匹配时。
  3. 数据量:当表中的数据量很大时,模糊匹配的性能会显著下降。

解决方法

1. 使用正确的字符集和排序规则

确保表和列使用支持中文的字符集和排序规则,例如utf8mb4

代码语言:txt
复制
CREATE TABLE example (
    id INT PRIMARY KEY,
    name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
);

2. 使用全文索引

对于全文搜索,可以考虑使用MySQL的全文索引功能。

代码语言:txt
复制
ALTER TABLE example ADD FULLTEXT(name);
SELECT * FROM example WHERE MATCH(name) AGAINST('中文');

3. 使用前缀索引

如果必须使用LIKE操作符,可以考虑使用前缀索引来提高性能。

代码语言:txt
复制
CREATE INDEX idx_name_prefix ON example(name(10));

4. 分页查询

对于大量数据的模糊匹配,可以考虑分页查询,避免一次性加载过多数据。

代码语言:txt
复制
SELECT * FROM example WHERE name LIKE '%中文%' LIMIT 10 OFFSET 0;

5. 使用外部搜索引擎

对于复杂的搜索需求,可以考虑使用外部搜索引擎,如Elasticsearch。

参考链接

通过以上方法,可以有效解决MySQL LIKE中文慢的问题,提高查询性能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

like模糊匹配查询慢解决之道——MySQL全文索引

* from t_chinese_phrase where instr(phrase,'昌') > 0; select * from t_chinese_phrase where phrase like...但是使用部分单词去查询或者使用部分中文去查询时,是查询不出来数据的,像中文需要使用中文分词器进行分词。...中文分词与全文索引 InnoDB默认的全文索引parser非常合适于Latin,因为Latin是通过空格来分词的。但对于像中文,日文和韩文来说,没有这样的分隔符。...查一下目前的值 show variables like '%token%'; 参数解析: innodb_ft_min_token_size 默认3,表示最小3个字符作为一个关键词,增大该值可减少全文索引的大小...之前的版本不支持中文,需使用第三方插件 6、全文索引只能在 InnoDB(MySQL 5.6以后) 或 MyISAM 的表上使用,并且只能用于创建 char,varchar,text 类型的列。

51410
  • Mysql慢查询_mysql并发查询慢

    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中...log-slow-queries :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。...配置 默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的,可以通过设置slow_query_log的值来开启,如下所示 mysql> show variables like ‘...开启了慢查询日志只对当前数据库生效,如果MySQL重启后则会失效。...你用show variables like ‘long_query_time’查看是当前会话的变量值,你也可以不用重新连接会话,而是用show global variables like ‘long_query_time

    17.7K20

    Mysql 慢日志

    my.cnf 是windows环境下的配置文件,my.ini是linux下的配置文件 没有此ini(配置)文件,Mysql能正常跑么?...查看慢日志是否开启 show variables like 'slow_query%'; image.png image.png 开启慢日志 set global slow_query_log='ON'...; image.png 查看当前有多少条慢日志 show global status like '%slow_queries%'; image.png 制造一条慢SQL select sleep(10...); 查看慢日志记录时间 // 查看当前会话的,如果修改成功,也不会看到改变,(等个几秒,重开一个窗口,执行命令,才能看见) show variables like 'long_query_time';...慢日志有2种存储形式 一个默认的是File,一个是Table 查看慢日志的类型 show variables like '%log_output%'; image.png 设置慢日志的类型 设置为:FILE

    3.5K20

    mysql慢日志查询_mysql开启慢查询日志

    通过命令查看慢查询最长时间,一般默认10s SHOW VARIABLES LIKE 'long_query_time 我们可以修改该时间,比如我在这里设置为1s,方便测试。...slow_query_log=ON; 然后执行一条sql语句,执行时间大于你所设置的long_query_time,我执行了一条sql语句执行时间为1.468s 打开Mysql安装位置, 找到my.ini...查看一下 这里就找到了慢查询日志了。。。...如果你不写 [session|global] 默认是session 会话,指取出当前窗口的执行,如果你想看所有(从mysql 启动到现在,则应该 global) show status like ‘connections...’; //显示慢查询次数 show status like ‘slow_queries’; 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    7K10

    mysql慢查询sql统计_mysql服务启动慢

    一、概述 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。...默认情况下,MySQL不启动慢查询日志。本文简单介绍如何开启慢查询日志,如何用mysqldumpslow分析慢查询。...2、查询慢查询日志的开启状态和慢查询日志储存的位置 show variables like ‘%quer%’; 参数说明: slow_query_log : 是否已经开启慢查询 slow_query_log_file...性能优化时开启此项,平时不要开启) 3、查看存放日志的形式 show variables like ‘log_output’; 4、永久开启慢日志 修改my.cnf 在配置文件my.cnf(一般为/etc.../slow-query.log 按照时间排序且含有’like’的top 5个SQL语句 $ mysqldumpslow -s t -t 3 -g “like” /var/lib/mysql/slow-query.log

    3.3K20

    mysql慢查询日志默认在哪里_MySQL 慢查询日志

    慢查询日志概念 MySQL 的慢查询日志是 MySQL 提供的一种日志记录,它用来记录在 MySQL 中查询响应时间超过阈值的语句,具体指响应时间超过 long_query_time 值的 SQL,会被记录到慢查询日志...默 认情况下,MySQL 是不开启慢查询日志的,需要我们手动设置这个参数值,当然,如果不是调优需要的话,一般不建议开启慢查询日志, 因为开启慢查询日志或多或少会带来一定性能的影响。...慢查询日志参数 slow_query_log:表示是否开启慢查询日志,OFF表示禁用,ON表示开启 slow_query_log_file:MySQL 慢查询日志存储路径。...,如下所示: 开启慢查询日志: 使用 set global slow_query_log=1 开启慢查询日志只对当前数据库生效,如果 MySQL 重启后则会失效。...long_query_time 的情况是不会被记录下来的,如下: 修改 long_query_time 值 执行修改操作之后,需要重新连接或打开一个会话才能看到修改的值 或者 使用 show global variable like

    4.6K20

    mysql的慢查询日志怎么查看_mysql慢查询优化

    1、查看mysql的慢查询日志是否开启 show variables like ‘%query%’; 可以看到slow_query_log的值是OFF,也就是mysql默认是不启用慢查询日志的。...这里还有个long_query_time,默认是10秒,也就是超过了10秒即为慢查询。...log_queries_not_using_indexes,如果设置为ON,则会将所有没有使用索引的查询都记录为慢查询。 2、如何启用慢查询日志呢?...3、指定日志的输出格式 MySQL支持TABLE和FILE两种输出格式,可以用下面的命令来查看当前的输出格式: show variables like ‘%log_output%’; 设置输出格式: set...select sleep(11); 查看TABLE记录的慢日志: select * from mysql.slow_log; 这里面记录了查询时间、发起查询的客户端、扫描行数、执行的sql语句等信息

    8.3K20
    领券