LINUX.ORG.RU

История изменений

Исправление 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.

Успех не обещаю, просто это общая рекомендация — использовать джойны вместо подзапросов. Может оно тоже плохо ляжет под общий алгоритм извлечения данных, может индекс не совпадёт. Но в общем случае так делают.