(Было бы полезно иметь SHOW CREATE TABLE
и EXPLAIN SELECT...
)
Если у вас нет этих индексов, они могут помочь со скоростью (на обеих машинах):
t2: (po_id, order_id, date_order) -- with `po_id` first
t3: (order_id, code_division) -- in either order
Кроме того, соединение с t3
кажется совершенно бесполезным.Поскольку оптимизатор может быть недостаточно умен, чтобы удалить его для вас, вы должны сделать это.
И переместить WHERE
внутрь
И избавиться от внешнего SELECT
.
Ах, черт возьми, здесь:
SELECT t1.job_status, t1.customer_po, t1.customer_name, t1.order_value,
t1.code_division, t1.assigned_sales_person, t1.date_assigned,
t2.date_order,
Datediff(Curdate(), t1.date_assigned)) AS days,
force4.Code('DV', t1.code_division) AS code_desc,
t2.order_id
FROM customer_po_log AS t1
LEFT JOIN orders AS t2 ON t2.po_id = t1.customer_po
WHERE u1.job_status = 'PENDING'
AND u1.code_division = 'L'
ORDER BY u1.days DESC
плюс
t1: INDEX(job_status, code_division) -- in either order
t2: INDEX(po_id, order_id, date_order) -- with `po_id` first
ОК, вы не написали код.Но теперь вы несете ответственность за его очистку.В противном случае следующий разработчик укажет пальцем на you .