Может быть, вам нужно сгенерировать сумму, прежде чем стыки ...
Per комментарий, чтобы отметить на оригинальный вопрос:
Хотите сумму comenzi до присоединяется к cosuri и categorii, которые может иметь несколько записей, вызывающих потенциально раздутую сумму или после присоединения, возможно, с раздутой суммой?
SELECT c.cantitate AS num,
produse.*,
cc.seo
FROM produse
LEFT JOIN (Select produs, cos, sum(cantitate) as cantitate
FROM comenzi
GROUP BY produs, cos) c ON produse.id = c.produs
LEFT JOIN cosuri cs ON c.cos = cs.id
LEFT JOIN categorii cc ON produse.categorie = cc.id
WHERE cs.status = 'closed' AND produse.vizibil ='1'
ORDER BY num DESC
LIMIT 14
Пример: Если comenzi имеет запись с ID 1 и сов 'A' и cantitate из 3 и присоединяется к cosuri на основе CS.ID, который имеет для ID 'A' в списке 3 раза, то сумма для кантата будет вычислена 3 + 3 + 3 (9) вместо Just 3 ... что может быть проблемой. Если мы вычислим сумму заранее, мы избежим проблемы (если она одна) и накладных расходов суммирования, что значения могут быть тысячи раз в зависимости от мощности между cosuri и категорией для comenzi. Что ... может улучшить производительность.
Чтобы знать наверняка, если это позволит повысить производительность, мы на самом деле должны были бы
- Понимание требований результатов (Сумма, прежде чем присоединиться к или после?)
- Смотрите некоторые выборочные данные наряду с статистикой каждая таблица, чтобы знать количество записей
- Знание индексов между объединениями таблиц и любым предложением where Критерии
- Вид плана объяснения в базе данных.
Без этих деталей мы не можем точно знать, что действительно поможет. Все есть догадки без фактов; которых здесь немного)
У вас есть индексы на столбцах 'SUM' и' GROUP BY'? – Martin
двигателю необходимо случайным образом выбрать значение для каждого столбца в элементе, который не является агрегатом, а не группой. Попробуйте добавить каждый столбец в группу выбора. Или вам действительно неважно, какие значения выбраны из produse. * И cc.seo? – xQbert
Мне все они нужны от produse (продукты) – speedy