История изменений
Исправление kaldeon, (текущая версия) :
Кажется, что можно сджойнить. Вместо top 1 джойним всё с top 40 и указываем там row_number, после чего фильтруем по row_number = 1.
Типовая задача — для каждого пользователя вернуть первый адрес. Джойним пользователей со всеми их адресами, каждому прописывая row_number() over (partition by user.id order by address)
(для каждого пользователя свой инкремент, в порядке возрастания адреса), затем оставляем только rn=1.
Успех не обещаю, просто это общая рекомендация — использовать джойны вместо подзапросов. Может оно тоже плохо ляжет под общий алгоритм извлечения данных, может индекс не совпадёт. Но в общем случае так делают.
Исправление kaldeon, :
Кажется, что можно сджойнить. Вместо top 1 джойним всё с top 40 и указываем там row_number, после чего фильтруем по row_number = 1.
Типовая задача — для каждого пользователя вернуть первый адрес. Джойним пользователей со всеми их адресами, каждому прописывая row_number partition by user.id (для каждого пользователя свой инкремент) и order by address (например), затем оставляем только rn=1.
Успех не обещаю, просто это общая рекомендация — использовать джойны вместо подзапросов. Может оно тоже плохо ляжет под общий алгоритм извлечения данных, может индекс не совпадёт. Но в общем случае так делают.
Исходная версия kaldeon, :
Кажется, что можно сджойнить. Вместо top 1 джойним всё с top 40 и указываем там row_number, после чего фильтруем по row_number = 1.
Типовая задача — для каждого пользователя вернуть первый адрес. Джойним пользователей со всеми адресами, каждому прописывая row_number partition by user.id (для каждого пользователя свой инкремент) и order by address (например), затем оставляем только rn=1.
Успех не обещаю, просто это общая рекомендация — использовать джойны вместо подзапросов. Может оно тоже плохо ляжет под общий алгоритм извлечения данных, может индекс не совпадёт. Но в общем случае так делают.