Bonjour,

Je travaille sur un ERP qui livre en standard des vues de ce type :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
create view mavue (
  col1, col2, col3, col4, col5, col6
)
as
select table1.col1, table1.col2, table2.col3, table2.col4, table3.col5, table3.col6
from table1, table2, table3
where table2.id = table1.fk_table2
and table3.id = table1.fk_table3
union all
select table1.col1, table1.col2, table2.col3, table2.col4, ' ', ' '
from table1, table2
where table2.id = table1.fk_table2
and not exists (
  select 1
  from table3
  where table3.id = table1.fk_table3
);

Vu que ça me fait froid dans le dos à chaque fois que je tombe dessus, et que je dois les dériver pour les personnaliser, je souhaite les réécrire de cette façon :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
create view mavue (
  col1, col2, col3, col4, col5, col6
)
as
select table1.col1, table1.col2, table2.col3, table2.col4, coalesce(table3.col5, ' '), coalesce(table3.col6, ' ')
from table1
inner join table2 on table2.id = table1.fk_table2
left outer join table3 on table3.id = table1.fk_table3;

Est-ce que je risque quoi que ce soit :
- en terme de données (pour moi, les deux écritures sont strictement équivalentes en terme de résultat, mais je voudrais en être certain)
- en terme de performances (pour moi, la nouvelle syntaxe est plus rapide, mais comment en être sûr ?)

Ces vues tournent sous Oracle 11gR2.