sobre exists y comando In | SQL Server Performance Forums

SQL Server Performance Forum – Threads Archive

sobre exists y comando In

Hola, que diferencia tengo al usar un comando In con un Exists, me dicen que el exists es mas rapido, pero mientras en una consulta en condicion digo que por ejemplo, que en este mes no exista la factura en las facturas de mascotas y el resto si. digamos algo asi select * from ProvisionFactura
where nro_factu not in (select * from LiquidacionFactura and mesfactu = ’08’)
and mesfactu = ’08’ me dicen mejor select * from ProvisionFactura t1
where not exists (select * from LiquidacionFactura t2 where t1.nro_factu = t2.nro_factu
and mesfactu = ’08’)
and mesfactu = ’08’ y yo opino algo adicional, que sucede si le coloco un top y pongo un campo en lugar de "*" select * from ProvisionFactura t1
where not exists (select top 1 nro_factu from LiquidacionFactura t2 where t1.nro_factu = t2.nro_factu and mesfactu = ’08’)
and mesfactu = ’08’ si uso el "In", mejor es colocarlo en una tabla y luego hacer la consulta select nro_factu into #tmpfactuliq from LiquidacionFactura and mesfactu = ’08’ select * from ProvisionFactura
where nro_factu not in (select nro_factu from tmpfactuliq )
and mesfactu = ’08’ esto seria si una factura tiene liquidaciones parciales, cada factura se va pagando, se que mejor es manejar un campo en la provision para saber si se liquido o no, pero este es un ejemplo, el codigo que uso es de inversiones y es mas grande la validacion pero mi consulta sobre estos comandos. Espero me puedas brindar conocimientos sobre estos temas, en los libros hablan de su uso pero no he visto o no se buscar donde hablen de sus comparaciones y buenas practicas para su uso adecuado. Muchas gracias
Lo habitual es usar el not in para una lista.
not in (‘a’,’x1′, etc.) y el not exist en un select como tu lo has escrito.
Lo importante es que tengas los ìndices adecuados. Luis Martin
Moderator
SQL-Server-Performance.com All in Love is Fair
Stevie Wonder
All postings are provided “AS IS” with no warranties for accuracy.
]]>