mysql - 升级到5.6后Mysql在所有字段中搜索字符串变慢
问题描述
当前的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
解决方案
假设ODATE
是数据类型DATE
或DATETIME
(它应该是!),改变
(ODATE LIKE '%Jan%')
AND (ODATE LIKE '%2021%')
至
ODATE >= '2021-01-01'
AND ODATE < '2021-01-01' + INTERVAL 1 MONTH
然后向我们展示这些指标,以便我们判断它们是否可以改进。
推荐阅读
- apache-spark - Pyspark(Dataframes)逐行读取文件(将行转换为字符串)
- php - 提交表单时排除输入
- dictionary - R Shiny Leaflet Map 在第一次移动后不会重绘
- ruby-on-rails - 多个连接计数和 ActiveRecord
- php - 当输入名称中有空格时如何从输入中获取值?
- amazon-web-services - 在哪里阅读 AWS DLM(数据生命周期管理)错误详细信息
- javascript - 循环遍历 Javascript 中的函数
- mongodb - 在底层 C 驱动程序中执行许多插入和捕获异常时,mongocxx 崩溃
- r - 通过从另一个表中查找值来更新列值
- javascript - 应用引导程序后具有透视图的元素上不需要的阴影边框