带有 COUNT 的 LEFT JOIN 查询需要很长时间才能执行

LEFT JOIN query with COUNT takes so long to execute

我有 4 table,专辑艺术家song_cover 歌曲 。 我正在尝试将 3 table 加入 专辑 table 并包括每张专辑中的歌曲总数。

我目前的查询 returns 结果符合预期,但执行时间将近一分多钟。

SELECT frco_album.*,
COUNT(frco_song.song_id) AS TotalSongs, 
artist_aka, artist_address, 
cover_filename
FROM frco_album
LEFT JOIN frco_song ON frco_album.album_id = 
frco_song.song_album_id
LEFT JOIN frco_artist ON frco_album.album_artist = 
frco_artist.artist_id
LEFT JOIN frco_song_cover ON frco_album.album_cover_id = 
frco_song_cover.cover_id
GROUP BY frco_album.album_id
ORDER BY album_month DESC LIMIT 0, 20;

当我摆脱 song table LEFT JOIN song ON album.album_id = song.song_album_idCOUNT(song.song_id) AS TotalSongs 时,查询执行得很快,正如预期的那样。

我做错了什么?

编辑:我编辑了问题以包含 tables 并更改了查询以反映 tables 中的实际行。

左联接将乘以行,然后使用 group by 将它们压缩回来。假设每张专辑只有一位艺术家和封面,我会尝试计算 select 子句中的歌曲:

SELECT album.*, artist_aka, artist_address, cover_filename, (
    SELECT COUNT(*)
    FROM songs
    WHERE song.song_album_id = album.album_id
) AS TotalSongs
FROM album
LEFT JOIN artist ON album.album_artist_id = artist.artist_id
LEFT JOIN song_cover ON album.album_cover_id = song_cover.cover_id
ORDER BY album_plays DESC
LIMIT 0, 20