Как выбрать COUNT в подзапросе оптимизированным способом

0

У меня вопрос о подсчете в подзапросе в базе данных mysql. Предположим, у меня есть таблица book которой есть author_id и таблица author с id и name. Я хочу получить список авторов с количеством книг для каждого автора. Поэтому я использую этот запрос:

SELECT a.id as id, a.name as name,
(SELECT COUNT(*) FROM book b WHERE b.author_id = a.id) as count
From author a

Это работает без проблем. Но я хочу знать, является ли это решение лучшим и оптимизированным решением для таких примеров? Если нет, есть ли лучший способ решения этих проблем?

Спасибо за Ваше внимание.

Теги:
database
subquery

1 ответ

1
Лучший ответ

Вы можете использовать join и group by так как вам нужно будет объединять данные при подсчете количества книг, написанных каждым автором.

SELECT a.id AS id, a.name AS name, count(b.id) AS 'count' FROM author a
LEFT JOIN BOOK b ON b.author_id = a.id
GROUP BY a.id, a.name;

Использование left join будет лучше, если не все авторы имеют книги в таблице книг, иначе inner join будет оптимальным. INNER JOIN vs LEFT JOIN производительность в SQL Server

Ещё вопросы

Сообщество Overcoder
Наверх
Меню