Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] que es mejor consulta con where o un inner join?

Estas en el tema de que es mejor consulta con where o un inner join? en el foro de Mysql en Foros del Web. Hola chicos que tal como anda todo. Tengo una duda y es que segun he investigado es más optimizado y rapido hacer una consulta con ...
  #1 (permalink)  
Antiguo 03/03/2014, 07:17
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
que es mejor consulta con where o un inner join?

Hola chicos que tal como anda todo. Tengo una duda y es que segun he investigado es más optimizado y rapido hacer una consulta con inner join que con un where. Es eso cierto? y otra cosita mas :D esto se puede pasar a JOIN?

Código MySQL:
Ver original
  1. SELECT us.nombres, us.nick, us.cod, de.style, ma.dir, ma.x, ma.y
  2. FROM usuario AS us, design AS de, mainPhoto AS ma
  3. WHERE us.cod = de.usuario
  4. AND de.cod = ma.design
  5. AND us.cod =1
  6. AND ma.type =1
  7. LIMIT 0 , 30

Y si saben de una pagina que convierta a JOIN online mejor :D claro que mientras aprendo :D
  #2 (permalink)  
Antiguo 03/03/2014, 19:54
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: que es mejor consulta con where o un inner join?

Hola sonickseven:

Efectivamente, los JOIN's tienen un mejor rendimiento que hacer las uniones EXPLICITAS, además de que te permite "ordenar" y "limpiar" tus consultas, evitando por ejemplo problemas de productos cartesianos entre las tablas. Cuando se trata de consultas pequeñas igual y no ves tanta diferencia, pero cuando involucras muchas tablas o muchos registros, las diferencias son considerables.

Cita:
esto se puede pasar a JOIN?
Si, cualquier consulta que hagas con JOIN's explícitos puede cambiarse a JOIN's.

Cita:
Y si saben de una pagina que convierta a JOIN online mejor :D
Hasta donde sé no existe ninguna herramienta que lo haga, pero en verdad me parece una exageración tratar de buscar una herramienta que lo haga de manera automática, sobre todo cuando tu consulta es tan básica.

Cita:
claro que mientras aprendo :D
La manera más fácil de aprender algo es haciéndolo... si tienes dudas acerca de cómo trabajan los JOIN's preguntale a Santa Wikipedia o preguntale a San Google, él generalmente tiene la respuesta para casi todo.

Como comentario adicional, olvidate del AS... es completamente inutil y no forma parte del estándar de SQL desde hace tiempo... para nombrar alias, basta con que pongas el nombre del alias sin anteponer la palabra AS...

Saludos
Leo.
  #3 (permalink)  
Antiguo 04/03/2014, 14:18
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: que es mejor consulta con where o un inner join?

es que lo de una pagina que haga las consultas por que lo he visto, claro que no es que yo le diga haga y ya je je lo que pasa es que cuando yo trabaje un tiempo con visual Studio de Mocosoft y no se pero me acuerdo que en una parte le pedia al usuario una consulta para un datagridview o algo asi (la verdad fue hace tanto tiempo). Pues yo le hacia las consultas pero sin inners solo a punta de where y la normal si me hago entender!!, y cuando le daba que esa era la consulta final visual lo que hacia era que la pasaba a una consulta con INNER. era chebre je je je.

Por cierto yo se como hacer con dos tablas!! pero con tres ya no se como hacer un inner por eso te pedi la ayuda.
  #4 (permalink)  
Antiguo 04/03/2014, 16:14
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: que es mejor consulta con where o un inner join?

hola de nuevo:

Hacer JOIN's con dos o tres o n tablas (sin rebasar el limite máximo de tablas que es de alrededor de 50), es exactamente lo mismo:

Código MySQL:
Ver original
  1. FROM tabla1, tabla2, tabla3, tabla4
  2. WHERE tabla1.campo = tabla2.campo and tabla2.campo = tabla3.campo and tabla3.campo = tabla4.campo and tabla3.otro_campo = tabla4.campo and tabla1.campo = 'algo' or tabla3.campo in (1, 2)

pasaría a ser algo como esto:

Código MySQL:
Ver original
  1. FROM tabla1
  2. INNER JOIN tabla2 ON tabla1.campo = tabla2.campo
  3. INNER JOIN tabla3 ON tabla2.campo = tabla3.campo
  4. INNER JOIN tabla4 ON tabla3.campo = tabla4.campo and
  5.                       tabla3.otro_campo = tabla4.campo
  6.    tabla1.campo = 'algo' or
  7.    tabla3.campo in (1, 2)


es decir, en las cláusulas ON SÓLO VAN LAS RELACIONES QUE SIRVEN PARA UNIR UNA TABLA CON OTRA... en el WHERE van los filtros de la información. hay algunos "trucos" para hacer más eficientes los JOIN's... por ejemplo, si tu tabla1 se relaciona con tus tablas 2 y 4, pero hay menos registros relacionas con la tabla4, entonces colocas primero el JOIN con la tabla 4 y después el de la tabla2... en realidad no hay mucha ciencia, insisto, es cuestión de práctica. Si tienes problemas con alguna consulta, postea lo que intentaste hacer y con gusto te ayudamos a corregirla.

Saludos
Leo
  #5 (permalink)  
Antiguo 05/03/2014, 15:36
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: que es mejor consulta con where o un inner join?

ok amigo gracias eso es lo que necesitaba saber, pues no sabia como hacerlo gracias :D

Etiquetas: join, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:22.