0
안녕하세요. 당신은 내가 내 루비 온 레일스 프로젝트의 일환으로이 예제를 사용하고이 SQL을Rails/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;
을 최적화 할 방법. 내 중첩 SQL (tmp)에는 10 밀리언 이상의 레코드가있을 수 있습니다. 성능이 더 좋으면 더 많은 SQL에서이를 분리 할 수 있습니다. 색인을 추가하여 더 빨리 만들 수 있습니까 (ID가 있습니까)?
이 쿼리가 수행해야하는 작업을 설명해 주시겠습니까? 그것은 매우 이상합니다. 왜냐하면 A) DISTINCT clients.id는 그 맥락에서 아무 의미도없는 것 같고, 실제로 clients.id를 선택할 필요가 전혀 없습니다. B) clients.id별로 그룹화하고 있습니다. 첫 번째 국가에서만 비용을 받지만 주문이 없으므로 각 클라이언트에 대해 하나의 임의의 국가를 얻을 수 있습니다. – gtd
내부 SQL에 모든 clients.id 중복을 제거하는 DISTINCT 특성이 있습니다. SQL은 작동하지만 최적화 제안을 찾고 있습니다. – xpepermint