В этом посте: SQL Query to get the data.Помогает ли MAX() повысить производительность запроса?
первый ответ:
SELECT students.student_id,student_name,father_name,mother_name,
COUNT(student_addresses.student_id) AS total_addresses,
COUNT(student_phones.student_id) AS total_phones
FROM students,student_phones,student_addresses
WHERE students.student_id = student_phones.student_id AND
students.student_id = student_addresses.student_id AND
students.student_id = 7
GROUP BY BY students.student_id,student_name,father_name,mother_name;
в то время как второй является:
SELECT s.student_id,
max(s.student_name) student_name,
max(s.father_name) father_name,
max(s.mother_name) mother_name,
COUNT(distinct a.student_address_id) total_addresses,
COUNT(distinct p.student_phone_id) total_phones
FROM students s
LEFT JOIN student_phones p ON s.student_id = p.student_id
LEFT JOIN student_addresses a ON s.student_id = a.student_id
WHERE s.student_id = 7
GROUP BY s.student_id
Теперь вопрос: есть ли какие-либо существенные различия между двумя запроса, когда речь идет о производительности? Использует ли использование MAX()
время выполнения второго запроса?
Я пытаюсь ответить Google, но не повезло. Я хочу дать четкое и конкретное объяснение этому.
Кристиан, я думаю, что Макс не повлияет на изменение от внутреннего к внешнему соединению. Если вы действительно хотите видеть, я бы сделал два запроса одинаковыми, за исключением использования агрегатных функций. – asantaballa
GROUP BY IN никоим образом не увеличивает производительность. –