Mysql:查询在具有相同配置的另一台 PC 上不工作

标签 mysql performance

我有一个查询在我当前的 PC 上运行良好,这是我的开发 PC 但不是在生产环境中。

这两个环境具有相同的 Material 配置。 数据库的设置与两者相同。

在开发环境中,查询执行时间不到 30 秒,但当我在生产环境中尝试它时,即使在 2 小时后我也没有得到结果。

这是执行时服务器上唯一正在运行的查询。

您知道为什么会这样吗?

SELECT td.td_date,
       td.td_number,
       td.td_status,
       td.td_open_datetime,
       td.td_update_datetime,
       Min(ack.ackup) ackUpdate
FROM   t_ticketdossier_td td
       INNER JOIN (SELECT a.td_number,
                          a.td_update_datetime ackUp
                   FROM   t_ticketdossier_td a
                   WHERE  a.td_status = 'Acknowledged') ack
               ON td.td_number = ack.td_number
                  AND td.td_update_datetime <= ack.ackup
WHERE  td.td_number IN (SELECT td_number
                        FROM   t_ticketdossier_td base
                        WHERE  Date(base.td_date) = @date
                               AND base.td_status = 'Acknowledged'
                               AND base.td_scope IS NULL
                               AND base.td_subcategory NOT LIKE '%RDV%'
                               AND base.td_product_type NOT LIKE '%RDV%'
                        GROUP  BY td_number)
       AND td.td_status = 'Affected'
GROUP  BY td.td_date,
          td.td_number,
          td.td_status,
          td.td_update_datetime

Explain from the dev server.

Explain from the prod server.

抱歉链接,我没有足够的声誉直接发布图片。

干杯, 马克西姆。

最佳答案

从我在 EXPLAIN 语句中看到的情况来看,您的生产数据库似乎缺少很多索引。

例如: TD_STATUS_IDX,TD_NUMBER_IDX

尝试添加这些并再次运行 EXPLAIN

关于Mysql:查询在具有相同配置的另一台 PC 上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25032886/

相关文章:

mysql - 你怎么称呼 bool 表?

mysql - 每个查询都会创建一个新的 CONNECTION_ID()

c++ - 如何使用 C++ 将二维矩阵的元素垂直复制到一维数组

php - MySQL 匹配与喜欢

c - LoadRunner - 在 lr_eval_string 函数中使用 %d

php - MySQL 查询随机滞后

mysql - 分组并获取表中的值

php - 如何在 sql 查询中将 WhereBetween 日期与 %LIKE% 一起使用

c# - 我怎样才能加快这个页面的速度?

javascript - let 语句应用后果