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