From f6335590c5dba33d79b059303e50daab829eb2a6 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 15 Jan 2024 17:00:32 +0000 Subject: [PATCH] Improve query --- src/Model/Photo.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 903c65db34..87a44c78c1 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -751,7 +751,7 @@ class Photo if (!DI::config()->get('system', 'no_count', false)) { /// @todo This query needs to be renewed. It is really slow // At this time we just store the data in the cache - $albums = DBA::toArray(DBA::p("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`, ANY_VALUE(`created`) AS `created` + $albums = DBA::toArray(DBA::p("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`, MIN(`created`) AS `created` FROM `photo` WHERE `uid` = ? AND `photo-type` IN (?, ?, ?) $sql_extra GROUP BY `album` ORDER BY `created` DESC", @@ -762,9 +762,10 @@ class Photo )); } else { // This query doesn't do the count and is much faster - $albums = DBA::toArray(DBA::p("SELECT DISTINCT(`album`), '' AS `total`, ANY_VALUE(`created`) AS `created` + $albums = DBA::toArray(DBA::p("SELECT '' AS `total`, `album`, MIN(`created`) AS `created` FROM `photo` USE INDEX (`uid_album_scale_created`) - WHERE `uid` = ? AND `photo-type` IN (?, ?, ?) $sql_extra", + WHERE `uid` = ? AND `photo-type` IN (?, ?, ?) $sql_extra + GROUP BY `album` ORDER BY `created` DESC", $uid, self::DEFAULT, $banner_type,