我的MySQL查询速度很慢:
SELECT
c.customerId, c.name,
CASE WHEN o.created > a.starting THEN o.created ELSE a.starting END AS lastact
FROM customer c
LEFT JOIN orders o ON o.customerId = c.customerId
LEFT JOIN activities a ON a.customerId = c.customerId
WHERE c.area IN ('AREA I', 'AREA II', 'AREA III')
AND c.active = 1
AND c.customerSubgroup NOT LIKE 'DEL%'
GROUP BY c.customerId
ORDER BY lastact ASC, name ASC
LIMIT 15
我在活动和订单中有很多数据。索引这些表需要一些帮助(认为这是最大的问题)。现在我在查询中提到的所有列中都有主键...
感谢您提前。
答案 0 :(得分:1)
只有主键的索引不会为你做。您应该根据要提取的条件构建帮助的索引。涵盖订单,活动的索引,因此它不必返回原始数据页面,而是直接从索引中获取结果。
table index
customer ( active, area, customerSubGroup, customerID )
orders ( customerID, created )
activities ( customerID, starting )