Este código es tuya para escrita principalmente desde un punto de rendimiento
estoy mencionando sólo alrededor de la consulta interna. Dado que necesitaba una explicación para el usuario. Lo que alguna vez sql he utilizado debe ser insertado al usuario consulta real ha utilizado anteriormente
and NOT EXISTS (SELECT 1 from vas NV WHERE NV.network =
b.network);
Explicando la consulta interna única Por lo general, la gente utiliza para poner select NV.netword
pero esto devuelven un dato que simplemente se utiliza para identificar si no existe una información Entonces, lo ideal es que lo que se devuelve en la consulta interna ni siquiera esté marcado en la consulta principal. Entonces, para reducir Bytes en el plan de explicación, usamos select 1
, que tendrá un costo mínimo de bytes y que, a su vez, reducirá el costo de la consulta.
Para ver la diferencia sugiero bajarse Oracle Developer SQL y en funcionamiento tanto la consulta en explicar ventana plan y atento a la columna de bytes para cada consulta
SELECT nv.network from vas NV WHERE NV.network = b.network
// cost will be depended on the value nv.network contain and that is selected in the where condition
mientras
SELECT 1 from vas NV WHERE NV.network = b.network
// cost will be independent of the column and cost lesser bytes selected and lesser cost.
No
existe podrás verificar con otras respuestas.
Gracias. la consulta alternativa a la que hizo referencia dio como resultado una mayor cardinalidad :( –
@Chin Boon: es 'network1' null? – Benoit
sí, no creo que esta consulta alternativa sea realmente la misma – Magne