А есть под рукой говнокод такой?А так еще я люблю написать откровенный говнокод и попросить указать, что не так.
Не, специально придумываю, мне этот процесс нравится дажеА есть под рукой говнокод такой?У меня есть один, не совсем говно, но весьма
Но может у тебя интереснее
![]()
скажи еще, что self-join> where not in
Ага, с подзапросом... Да не... это как раз кривое решение.
всегда считал кучу подзапросов кривым.where not exists кривое.
не. просто некоторые базы не умеют их готовитьда почему недостатки, джойн как правило оптимальнее подзапроса в IN, это факт. Оптимизаторы даже пытаются переписывать запросы такими подзапросами на join внутрях базы.
# explain select dep.id from dep where not exists (select 1 from emp where dep_id = dep.id);
QUERY PLAN
---------------------------------------------------------------
Hash Anti Join (cost=1.01..22.26 rows=1200 width=4)
Hash Cond: (dep.id = emp.dep_id)
-> Seq Scan on dep (cost=0.00..12.40 rows=2400 width=4)
-> Hash (cost=1.00..1.00 rows=2 width=4)
-> Seq Scan on emp (cost=0.00..1.00 rows=2 width=4)
# explain select dep.id from dep left join emp on (emp.dep_id = dep.id) where emp.id is null;
QUERY PLAN
---------------------------------------------------------------
Hash Left Join (cost=1.01..22.43 rows=12 width=4)
Hash Cond: (dep.id = emp.dep_id)
Filter: (emp.id IS NULL)
-> Seq Scan on dep (cost=0.00..12.40 rows=2400 width=4)
-> Hash (cost=1.00..1.00 rows=2 width=8)
-> Seq Scan on emp (cost=0.00..1.00 rows=2 width=8)
опять читать википедиюпочему http/1.0 без него работать мог, а в http/1.1 пришлось ввести.