Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/03/2011, 18:28
oms02
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 10 meses
Puntos: 11
optimizacion de consulta

Hola a todos.

Tengo una consulta a tres tablas, un poquito liada:

Tabla1: mercado
Campo1: vendedor

Para hacer la consulta parto de esta tabla. Contiene un campo ID (no de usuario, sino de venta, que es de donde inicio para hacer la consulta).

Tabla2: bienes
Campo2: dinero

Contiene un campo ID de usuario

Tabla3: principal
Campo3: nombre

Contiene un campo ID de usuario

La consulta es asi:
Código MySQL:
Ver original
  1. SELECT mercado.vendedor, principal.ID, bienes.dinero
  2. FROM mercado
  3. INNER JOIN principal ON mercado.vendedor = principal.nombre
  4. INNER JOIN bienes ON principal.ID = bienes.ID
  5. WHERE mercado.ID = $dato

El problema ha venido al utilizar EXPLAIN para ver "como de buena" era esta consulta.
(La consulta debe mostrar siempre un unico registro.)

Me arrojo el siguiente resultado:

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE mercado const PRIMARY PRIMARY 4 const 1
1 SIMPLE bienes ALL PRIMARY NULL NULL NULL 192
1 SIMPLE principal eq_ref PRIMARY PRIMARY 4 bd.bienes.ID 1 Using where

y ese resultado en gris no me gusto nada. Mas que no gustarme (que eso tambien), no entiendo porque ha de leer todos los registros si le he dado la condicion "principal.ID = bienes.ID ".

Hay alguna manera de optimizar esto? quizas un LIMIT haria que tras obtener un resultado (registro) que cumpla las condiciones, deje de buscar en los demas??? La verdad que lo digo un poco a la desesperada pq no se "por donde tirar"....

Alguna idea??

1 saludo y muchas gracias!