[pyar] OT: Comparación de queries

Ricardo Aráoz ricaraoz en gmail.com
Mie Jun 23 13:54:13 ART 2010


On 20/06/2010 05:47 p.m., "José C. Massón" wrote:
> El 20/06/10 15:31, Sebastian Bassi escribió:
>> 2010/6/20 Roberto Alsina<ralsina en netmanagers.com.ar>:
>>> Tal vez sea buena idea pedir un EXPLAIN para ver que hace cada una.
>>
>> Buena idea, no entiendo bien el output pero se ve que la equi-join se
>> hacen en menos pasos:
>>
>> sqlite>  EXPLAIN SELECT q_name FROM miranda WHERE parID in (SELECT
>
>
> Mmmm que fea que es la salida de explain de sqlite!
>
> No sé como se comportará sqlite (estoy acostumbrado a MySQL), pero yo 
> evitaría hacer queries anidadas
>
> Por que no lo hacés con JOIN??
>
> SELECT m.q_name FROM miranda m
> INNER JOIN parid_bin p ON (m.parID = p.parID AND p.bin = '10B')
>
> No tengo tu DB pero debería andar.

Si, el join explícito es siempre mejor idea que el implícito. Aunque 
sólo sea a fines de documentar mejor lo que estás haciendo ya que en el 
"ON" das la condición para juntar las tablas. Esto puede ser importante 
y muy cómodo cuando los "WHERE" se vuelven más complicados y/o cuando 
combinás muchas tablas.
De todas maneras si mirás el join explícito te vas a dar cuenta que 
"p.bin = '10B'" no es parte del JOIN sino del WHERE , con lo cual para 
mí debería quedar :
SELECT m.q_name
     FROM miranda m
     INNER JOIN parid_bin p
         ON m.parID = p.parID
     WHERE p.bin = '10B'




More information about the pyar mailing list