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

Orden de acceso a tablas/condiciones dentro de una consulta

Estas en el tema de Orden de acceso a tablas/condiciones dentro de una consulta en el foro de Mysql en Foros del Web. Hola a todos! Tengo una duda a nivel de optimización básica de conultas. En principio, ¿Cuál es el orden de acceso a tablas/condiciones en una ...
  #1 (permalink)  
Antiguo 04/04/2012, 02:58
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 9 años
Puntos: 4
Orden de acceso a tablas/condiciones dentro de una consulta

Hola a todos!

Tengo una duda a nivel de optimización básica de conultas. En principio, ¿Cuál es el orden de acceso a tablas/condiciones en una consulta con MySql? En oracle sé que sería:

- para tablas, de derecha a izquierda
- para condiciones, de abajo a arriba.

Así pues:

Select *
From Tabla_A, TablaB
Where Tabla_A.Campo = 1
And Tabla_A.Id = Tabla_B.Id
And Tabla_B.Campo = 2

Es decir, el acceso a tablas sigue el siguiente orden ( de dercha a izquierda ):
- Primero la Tabla_B y después va a la Tabla_B

Y, por lo tanto, para ser lógicos, la parte de las condiciones debe seguir ese criterio. Es decir ( y montando las condiciones de abajo a arriba ) :
- Primero filtra la Tabla_B
- Después accede mediante join a la Tabla_A
- Y, finalmente, una vez en la Tabla_A aplica los filtros sobre la tabla

Me da la sensación que MySql no sigue esta norma. ¿Es necesario colocar las tablas ( from ) en algún orden en particular? Y del mismo modo ¿Es necesario poner las condiciones ( where ) en algún orden concreto?

Muchas gracias por vuestra ayuda!
  #2 (permalink)  
Antiguo 04/04/2012, 03:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 11 meses
Puntos: 574
Respuesta: Orden de acceso a tablas/condiciones dentro de una consulta

Creo que las reglas no son tan simples ni en oracle ni en mysql...

Código MySQL:
Ver original
  1. From Tabla_A INNER JOIN TablaB
  2. ON Tabla_A.Id = Tabla_B.Id
  3. Where Tabla_A.Campo = 1
  4. And Tabla_B.Campo = 2;

La sintaxis standar seria esta ... tanto para MySql como Oracle...

12.8.2. EXPLAIN Syntax

Código MySQL:
Ver original
  1. From Tabla_A INNER JOIN TablaB
  2. ON Tabla_A.Id = Tabla_B.Id
  3. Where Tabla_A.Campo = 1
  4. And Tabla_B.Campo = 2;

Quizas te ayude a analizar la query, no es tan completo como el de Oracle....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 04/04/2012 a las 05:03

Etiquetas: join, orden, select, sql, tabla, campos
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 08:42.