Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
31.01.2003, 21:53
|
|||
---|---|---|---|
|
|||
Пересечение таблиц при помощи PL/pgSQL |
|||
#18+
Здраствуйте. В целом проблема такова - есть некоторая функция, которя получает уникальное значение некоторого поля в базе, по нему высчитывает значение другого поля в другой базе. В принципе ничего военного в этом нет, пару SQL - запросов. Соответствие жесткое - каждому - каждое. Вот захотелось мне сделать вот такой запрос: Код: plaintext
Ведь с моей точки зрения это практически тоже самое: Код: plaintext
И все работает вот только Postgre делает умножение таблиц, т.е. он сравнивает каждую запись t1 с каждой записью t2. Пока это тест, не страшно, но на больших объемах все ляжет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2003, 10:22
|
|||
---|---|---|---|
Пересечение таблиц при помощи PL/pgSQL |
|||
#18+
У тебя функция возвращает одно значение, которое потом сравнивается со значениями в первой таблице. Сама функция, в принципе, тоже ищет по одному значению. Т.о. в первом случае (очень грубо) мы имеем a+b сравнений (а - кол-во записей в первой таблице, b - соответственно), а во втором случае, как правильно замечено, a*b. Так что здесь "практически то же самое" вряд ли подойдет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.02.2003, 15:41
|
|||
---|---|---|---|
|
|||
Пересечение таблиц при помощи PL/pgSQL |
|||
#18+
Привет XKiller. То есть я понимаю, что он сравнивает все со всеми, иначе он не работать не может, но зачем каждый вызывать функцию. Получить один раз значение и вперед. Причем все мои попытки ограничить как-нибудь, как у нас говорили в школе 20 лет назад , область определения функции не к чему не привели. Я хотел в начале обрезать набор записей, типа дата не меньше вчерашнего числа. Он по своему раставляет приоритеты в вычислении фразы WHERE . Есть в определении функций какие-то атрибуты, но я не разобрался какие. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.02.2003, 22:55
|
|||
---|---|---|---|
|
|||
Пересечение таблиц при помощи PL/pgSQL |
|||
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=2008257]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 252ms |
total: | 377ms |
0 / 0 |