Optimized queries to iterate over artists/releases, when specifying a media library

This commit is contained in:
emeric
2024-04-12 16:58:13 +02:00
parent 5bf9be304b
commit e6e8a6eac5
2 changed files with 4 additions and 7 deletions
+2 -4
View File
@@ -196,10 +196,8 @@ namespace lms::db
if (library.isValid())
{
query.join("track t ON t.id = t_a_l.track_id");
query.join("track_artist_link t_a_l ON t_a_l.artist_id = a.id");
query.where("t.media_library_id = ?").bind(library);
query.groupBy("a.id");
// Faster than using joins
query.where("EXISTS (SELECT 1 FROM track_artist_link t_a_l JOIN track t ON t.id = t_a_l.track_id WHERE t_a_l.artist_id = a.id AND t.media_library_id = ?)").bind(library);
}
utils::forEachQueryResult(query, [&](const Artist::pointer& artist)
+2 -3
View File
@@ -294,9 +294,8 @@ namespace lms::db
if (library.isValid())
{
query.join("track t ON t.release_id = r.id");
query.where("t.media_library_id = ?").bind(library);
query.groupBy("r.id");
// Faster than using joins
query.where("EXISTS (SELECT 1 FROM track t WHERE t.release_id = r.id AND t.media_library_id = ?)").bind(library);
}
utils::forEachQueryResult(query, [&](const Release::pointer& release)