Re: query

From
Eugeney Putilin (2:5020/175.2)
To
Alex Cherednichenko (2:5054/37.63)
Date
2005-03-05T09:28:20Z
Area
SU.DBMS.INTERBASE
From: "Eugeney Putilin" <eugeney@offpoly.ru>

Fri Mar 04 2005 21:10, Alex Cherednichenko wrote to Andrew Sovgir:

 AC> From: "Alex Cherednichenko" <cherednichenko@wo.cz>

 AC> Привет, Andrew!
 AC> Вы пишешь к All 03 марта 2005:

 AS>> Подскажите, как пpавильно (с точки зpения скоpости выполнения) написать
 AS>> запpос  такого типа:

 AS>> select <что-то> from table1 <тут еще всякие джойны>
 AS>> where table1.id not in (select id from table2 where...)

 AS>> Т.е. избавиться от вложенного запpоса.

 AC> Немного облегчит ситуацию:
 AC> select <что-то> from table1 <тут еще всякие джойны>
 AC> where not EXISTS(select 1 from table2 where table2.id = table1.id )

 AC> Исключить же подзапрос вообще, имхо, не получится.
 Нет счасться проктологам :-Р, но вариант с not EXISTS будет работать быстрее.

 select <что-то> from table1 <тут еще всякие джойны>
 left join table2 on  table2.id = table1.id ....
 where table2.id is null

С уважением Путилин Евгений

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
SEEN-BY: 46/50 50/203 450/186 1024 451/30 454/9 4614/20 4646/1 5000/5000
SEEN-BY: 5001/5001 5002/79 5003/57 5010/53 5011/13 5012/23 5020/52 175 400 545
SEEN-BY: 5020/715 758 894 1042 1523 1604 2238 4441 8383 12000 5021/29 5025/3
SEEN-BY: 5025/750 5027/16 5030/115 556 966 1063 1900 5032/14 5040/47 5042/13
SEEN-BY: 5054/1 8 9 28 35 37 45 63 5055/95 5058/24 5062/1 5069/7 5070/1222
SEEN-BY: 5080/68 1003 5082/6 5083/21 5085/13 5095/20 6000/254
PATH: 5020/175 4441 545 5054/1 37