Как оптимизировать код для oralcle case when condition?
Мой sql имеет два поля результата в соответствии с одним и тем же условием,теперь я должен написать его два раза,интересно, компилятор базы данных уже оптимизировал код автоматически или я должен изменить другой способ оптимизации sql?
select id,parent_id as p_Id,name, (case when exists(select * from t_group t2 where t1.id=t2.parent_id) then 2 else 1 end) type, (case when exists(select * from t_group t2 where t1.id=t2.parent_id) then 'true' else 'false' end) as is_Parent from t_group t1
Я пытался изменить его, но потерпел неудачу.
select id,parent_id as p_Id,name, (case when exists(select * from t_group t2 where t1.id=t2.parent_id) then 2 else 1 end) type, (case when type==1 then 'true' else 'false' end) as is_Parent from t_group t1
Что я уже пробовал:
Я пытался изменить его, но потерпел неудачу.
выберите id, parent_id как p_Id, имя,
(случай, когда существует(выберите * от t_group Т2 где Т1.ИД=Т2.ид_родительского_объекта)
тогда 2 иначе 1 конец) тип,
(случай, когда Тип==1
тогда 'true' else 'false' end) as is_Parent
из t_group Т1
PIEBALDconsult
Я избегаю подзапросов, когда это возможно - исторически они работали очень плохо (хотя я ожидаю, что за последние двадцать лет ситуация улучшилась). В наши дни я предпочитаю общие табличные выражения и соединения.