olegy123 писал(а):Select B в Select A - это плохой подход. Каждый Row A может выборку делать в Select B каждый раз. если Select A - дает 1000 и Select B 2000 - то ловите 2000000 операций.
Еще фокус в том что если Select B даст более одной позиции?
В голой теории возможно вы правы. Но на практике такого не будет. При правильно построенной базе (наличие PK/FK/индексов) сервер выберет только одну запись
Причем во время поиска даже обращения к данным не будет - всё решится на уровне индексов. И во многих случаях это будет даже быстрее, чем через join в основном запросе (так как нет обращения к страницам данных).
С другой стороны оптимизатор FB (а как я понял - там FB) в последних версиях тоже стал умнее. Так что по времени там будет практически равнозначно.
Но я не спорю, что если задаться, то можено сделать такую базу - где всегда на любых запросах будет фулскан по всем данным. Надеюсь - это не наш случай?
olegy123 писал(а):JOIN - зачем он нужен и когда он применяется? Зачем и когда необходимо заменить на WHILE во связанных таблицах?
Изначально у JOIN единственное назначение - отделить в запросе связи таблиц от логики самого запроса. Как плюс, JOIN позволяет строить связи один к пустому (т.е. когда в справочнике запись есть, а в основной таблице - нет)
До введения в стандарт этой конструкции СУБД строители извращались вот таки образом (кажется в MS SQL этот рудимен до сих пор остался)
- Код: Выделить всё
where
a.aa -= b.aa