БЕГЕМОТИКОВ МОЖНО! Войти !bnw Сегодня Клубы
УНЯНЯ. У нас есть немножечко инфы об этом пользователе. Мы знаем, что он понаписал, порекомендовал и даже и то и другое сразу. А ещё у нас есть RSS.
Теги: Клубы:

Упростил реальный кейс до двух таблиц (объекты и связи между объектами) и функции, которая по id объекта возвращает id привязанного к нему объекта. Суть в использовании именно функции для джойна, а не прямом джойне таблиц.
Заполняем таблицы небольшим количеством данных — в примере всего 500 объектов, половина из которых имеет связь. http://sqlfiddle.com/#!15/4881e1/6 и делаем два запроса с джойном функции:

/* (SLOW) */
-- функция вызывается 500*500 раз, после чего делается джойн вложенным циклом
-- Execution Time: 5242ms
explain analyze select obj.id, ot.id
from toobject obj   
left join toobject ot on ot.id = to_getidref(obj.id);

/* (FAST) */
-- функция вызывается 500 раз в сабквери, после чего делается хеш джойн
-- Execution Time: 19ms
explain analyze select obj.id, ot.id
from toobject obj   
left join toobject ot on ot.id = (select to_getidref(obj.id));
#2W1H9Q (3) / @kogda / 3019 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.