我試圖讓潛在客戶的名單與他們的訂單歷史記錄(LTV)MySQL的左連接以一段時間
的和無沿的,這個查詢負載的順序在第二下。隨着order by
和查詢超過90秒。
SELECT a.customerid,a.firstname,a.lastname,Orders.ltv
FROM customers a
LEFT JOIN (
SELECT customerid,
SUM(amount) as ltv
FROM orders
GROUP BY customerid) Orders
ON Orders.customerid=a.customerid
ORDER BY
Orders.ltv DESC
LIMIT 0,10
任何想法如何可以加快?
編輯:我想我清理查詢有點太多。這個版本的查詢實際上要複雜一點。其他數據從客戶表中選擇,也可以進行排序。
我的猜測是你正在對沒有合適索引的表運行查詢。我的猜測是你也不需要子選擇。你可以運行'SHOW CREATE TABLE customers'和'SHOW CREATE TABLE orders'並把結果放在你的問題中嗎?實際上,在查看您的查詢時,我不明白爲什麼您加入了所有正弦表中的客戶表,您只能從中獲得客戶訂單(該訂單表中已存在相同的值。 –
@ user2864740:它來自子查詢,沒有索引;) – Wrikken
@jwatkins你根本不需要做子選擇。您可以計算總和而無需再次選擇。 –