Comunidad de diseño web y desarrollo en internet online

Consulta Sql de varias tablas Optimizada.-

Citar            
MensajeEscrito el 09 Oct 2009 08:50 pm
Tengo que realizar una consulta SQL entre varias tablas.- Esta la puedo realizar de tres maneras, mi duda esta en saber cual sera la mas optima:

Consulta 1

Código MySQL :

SELECT * 
FROM tbl1
INNER JOIN tbl2 ON tbl1.Id1 = tbl2.Id1 AND tbl1.activo = 1
INNER JOIN tbl3 ON tbl2.Id2 = tbl3.Id2
INNER JOIN tbl4 ON tbl3.Id3 = tbl4.Id3
INNER JOIN tbl5 ON tbl4.Id4 = tbl5.Id4
INNER JOIN tbl6 ON tbl5.Id5 = tbl6.Id5


Consulta 2

Código MySQL :

SELECT * 
FROM tbl1
INNER JOIN tbl2 ON tbl1.Id1 = tbl2.Id1
INNER JOIN tbl3 ON tbl2.Id2 = tbl3.Id2
INNER JOIN tbl4 ON tbl3.Id3 = tbl4.Id3
INNER JOIN tbl5 ON tbl4.Id4 = tbl5.Id4
INNER JOIN tbl6 ON tbl5.Id5 = tbl6.Id5
WHERE tbl1.activo = 1



Consulta 3

Código MySQL :

SELECT * 
FROM 
   (
   SELECT * 
     FROM tbl1
     WHERE activo = 1
   ) AS tbl1
INNER JOIN tbl2 ON tbl1.Id1 = tbl2.Id1
INNER JOIN tbl3 ON tbl2.Id2 = tbl3.Id2
INNER JOIN tbl4 ON tbl3.Id3 = tbl4.Id3
INNER JOIN tbl5 ON tbl4.Id4 = tbl5.Id4
INNER JOIN tbl6 ON tbl5.Id5 = tbl6.Id5



Nota: Para hacer el codigo mas entendible omiti la seleccion de las columnas y coloque "SELECT * FROM"

Según uds. cual de estas tres consulta es la mas optima, yo me inclino entre la 1 y la 3.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie8
Citar            
MensajeEscrito el 09 Oct 2009 09:08 pm
ninguna de las anteriores.

pero la mejor es la 2, sin embargo debes colocar el nombre de los campos que mostraras, no es lo mismo mostrar 3 campos a mostrar 50

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 10 Oct 2009 01:03 am
Inyaka, por eso puse esta nota.

york3rs escribió:

Nota: Para hacer el codigo mas entendible omiti la seleccion de las columnas y coloque "SELECT * FROM"


Y como deberia ser la Optima desde tu punto de vista.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie8
Citar            
MensajeEscrito el 10 Oct 2009 02:57 am
yo creo que en select deberias poner tabla1.*, tabla2.*, tabla3.* o no?

Por RanuTo

32 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 13 Oct 2009 10:55 pm
Dano ò Maikel me podra dar una ayudita.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie
Citar            
MensajeEscrito el 13 Oct 2009 11:40 pm
Las 3 consultas sin duda retornan lo mismo.

Las consultas 1 y 3 son iguales, sólo que en la 3 escribes más y bueno básicamente la condición de la 1 hace eso que haces tu explicitamente en la 3.

La 2 descartada... revisa más registros que las otras dos.

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 14 Oct 2009 07:15 pm
Maikel, que hay de verdad que cuando hay gran cantidad de datos en las tablas, lo más conveniente es realizar consultas anidadas. Como en este caso sería en la consulta 3.

De ante mano, muchas gracias a todos.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.