0
嘿。你將如何優化這個SQLRails/mysql SUM不同記錄 - 優化
SELECT SUM(tmp.cost) FROM (
SELECT DISTINCT clients.id as client, countries.credits_cost AS cost
FROM countries
INNER JOIN clients ON clients.country_id = countries.id
INNER JOIN clients_groups ON clients_groups.client_id=clients.id
WHERE clients_groups.group_id IN (1,2,3,4,5,6,7,8,9)
GROUP BY clients.id
) AS tmp;
我使用這個例子作爲我的Ruby on Rails項目的一部分。請注意,我的嵌套SQL(tmp)可以有超過1000萬條記錄。如果性能更好,您可以將其拆分爲更多的SQL。 我應該添加任何索引以使其更快(我擁有ID)嗎?
你能解釋一下這個查詢應該做什麼嗎?這非常奇怪,因爲A)DISTINCT clients.id在這種情況下似乎並不意味着任何東西,事實上,選擇clients.id的必要性並不明顯,B)您正在按clients.id進行分組,這意味着您只會從第一個國家獲得成本,但沒有訂單,因此您將基本上爲每個客戶端獲得一個任意國家。 – gtd 2010-04-04 21:26:35
內部SQL具有DISTINCT屬性以消除所有clients.id重複。 SQL的作品,但我正在尋找優化建議。 – xpepermint 2010-04-05 12:26:14