【问题标题】:Mysql search string in all fields slowness after version upgraded to 5.6升级到5.6后Mysql在所有字段中搜索字符串变慢
【发布时间】:2021-09-15 18:43:12
【问题描述】:

当前的mysql版本是5.5。我将副本升级到 5.6 版。

以下查询从 5.5 开始执行 15 秒。 但是 5.6 版需要 750+s 才能运行相同的查询。

查询:

SELECT  SQL_NO_CACHE *
    FROM  RECORDS
    LEFT OUTER JOIN  AUTH  ON RECORDS.`id` = AUTH.`id`
    LEFT OUTER JOIN  STAFFCOMMENTS  ON RECORDS.`id` = STAFFCOMMENTS.`id`
    WHERE  (ODATE LIKE '%Jan%')
      AND  (ODATE LIKE '%2021%')
      AND  RECORDS.NAME <> 'CUSTOMER'
      AND  (RECORDS.NAME <> 'COURIER-ORDER')
  order BY RECORDS.ID DESC
    LIMIT  35000 

【问题讨论】:

  • 总是为所有invilved的表添加create table和一个EXPLAIN SELECT *来查看使用了哪些索引
  • 语法“RECORDS BY”是什么意思?
  • 多少内存? my.cnf 文件是否相同? RECORDS 有多少行? ODATE 在哪个表中? ODATE 的数据类型是什么?
  • 严肃问题:为什么要费心将服务器升级到不再受支持的软件版本? 5.6 已于 2021 年 2 月终止支持。为什么不选择最新的稳定软件版本? en.wikipedia.org/wiki/MySQL#Release_history
  • 谢谢大家。我的数据库引擎是 mysql 5.5 版本的 MISAM。我在 mysql 5.6 版本中将引擎更改为 InnoDB。它解决了问题

标签: mysql full-text-search query-optimization mysql-5.6 mysql-5.5


【解决方案1】:

假设ODATE 的数据类型为DATEDATETIME(应该是!),更改

       (ODATE LIKE '%Jan%')
  AND  (ODATE LIKE '%2021%')

       ODATE >= '2021-01-01'
  AND  ODATE  < '2021-01-01' + INTERVAL 1 MONTH

然后给我们展示索引,以便我们判断是否可以改进。

【讨论】:

    猜你喜欢
    • 2013-07-29
    • 1970-01-01
    • 2017-03-16
    • 2015-11-07
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2011-03-22
    相关资源
    最近更新 更多