源于领导让优化 sql 语句,网上搜了半天自己摸索了半天
SELECT
a.order_name AS "orderName",
a.recipe_name AS "recipeName",
a.part_no AS "partNo",
a.part_type AS "partType",
SUM( weight_set ) AS weightSet,
SUM( weight_act ) AS weightAct,
a.create_by AS "createBy.id",
a.create_date AS "createDate",
a.update_by AS "updateBy.id",
a.update_date AS "updateDate",
a.remarks AS "remarks",
a.del_flag AS "delFlag"
FROM
mes_compound_component a USE index (update_date)
WHERE
a.del_flag = '0'
AND a.is_invalid = '0'
AND a.update_date BETWEEN "2022-12-01 00:00:00" AND "2023-02-01 16:22:57"
AND a.recipe_name like "%B-%"
GROUP BY
a.part_no
ORDER BY
a.recipe_name
> OK
> 查询时间: 0.934s
但是 explain 的结果是这样的 开发环境 MYSQL
生产环境用的 explain 生产环境 MYSQL
开发环境: 如果使用 force index 的话要 20s 才能查出数据,但是使用 use index 的话就是 1s 不到。用的是普通的固态硬盘 生产环境: 不管 force index 或者是 use index 都要 180s 左右,而且目测是机械硬盘组成的服务器。
现在想请教一下到底怎么办才可以让服务器也能优化到 20s 以内的查询?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.