[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: какие запросы лучше
Viktor
Всем привет!

Выборка из нескольких таблиц например через перечисление после оператора from

SELECT * from table1, table2, table3 where table1.id=table2.id и другие условия

Что происходит во время создания временных таблиц, как они суммируются и затем лишь происходит выборка? Лучше с этой позиции использовать join?



Спустя 12 часов, 12 секунд (22.07.2010 - 07:50) Kuzya написал(а):
Если я не ошибаюсь, то при грамотном подходе (без SELECT * всяких) оба варианта одинаково ресурсозатратны.

Спустя 1 час, 18 минут, 32 секунды (22.07.2010 - 09:08) sergeiss написал(а):
SELECT * from table1, table2, table3 where table1.id=table2.id и другие условия

на самом деле, это и есть JOIN, один из его вариантов (CROSS JOIN) wink.gif
Из хэлпа по Постгре:
Цитата
FROM T1 CROSS JOIN T2 is equivalent to FROM T1, T2. It is also equivalent to FROM T1 INNER JOIN T2 ON TRUE (see below)

И это не специфика Постгре! То же самое во всех БД. То есть, указанная тобой форма записи - просто упрощенный вариант "кросс-джойна".

При таком джойне происходит объединение строк "каждая с каждой", при этом ты указал условие, ограничивающее выборку. Без этого условия будет реально сделано очень много строк.


PS. А что с производительностью? В чем проблемы - или это не проблемы, а только мысли пока?
Для больших таблиц (миллионы записей) надо использовать некоторые хитровывернутые приёмы, чтобы время выборки было разумным. Вот с этим у меня опыта немало... Так что если есть реальные вопросы - спрашивай.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.