我有一个查询在我当前的 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
语句中看到的情况来看,您的生产数据库似乎缺少很多索引。
例如:
TD_STATUS_IDX
,TD_NUMBER_IDX
尝试添加这些并再次运行 EXPLAIN
。
关于Mysql:查询在具有相同配置的另一台 PC 上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25032886/