2010-12-22 25 views

Respuesta

14

Voy a intentar una explicación ...

eq_ref - imaginar que tiene dos tablas. Tabla A con columnas (id, texto) donde id es una clave principal. Tabla B con las mismas columnas (id, texto) donde id es una clave principal. Tabla A tiene los siguientes datos:

1, Hello 
2, How are 

Tabla B tiene los siguientes datos:

1, world! 
2, you? 

Imagínese eq_ref como unión entre A y B:

select A.text, B.text where A.ID = B.ID 

Esta unión es muy rápido porque para cada fila escaneada en la tabla A solo puede haber UNA fila en la tabla B que satisface la condición JOIN. Uno y no más de uno. Eso es porque B.id es ÚNICO. Aquí tiene una código seudo que ilustra el procesamiento del lado del servidor:

foreach (rowA in A) 
{ 
    if (existsInBRowWithID(rowA.id) 
    { 
     addToResult(rowA.text, getRowInBWithID(rowA.id).text); 
     break; 
    } 
} 

ref - Ahora imagina otra tabla C con columnas (id, texto) en la cual Identificación del índice, pero uno no ÚNICA. Tabla C tiene los siguientes datos:

1, John! 
1, Jack! 

Imagínese ref como unión entre A y C:

select A.text, C.text where A.ID = C.ID 

Aquí son un pseudo código que ilustra el procesamiento del lado del servidor:

foreach (rowA in A) 
{ 
    foreach (rowC in C) 
    { 
     if (rowA.id == rowC.id) 
     { 
      addToResult(rowA.text, rowC.text); 
     } 
    } 

} 

Esta JOIN no es tan rápida como la anterior, ya que para cada fila escaneada en la tabla A hay VARIAS posibles filas en la tabla C que pueden satisfacer el JOIN con dition (sin interrupción en el ciclo de arriba). Eso es porque C.ID NO ES ÚNICO.

Espero que ayude ...

Cheerz!

+0

gracias amigo, lo tengo ... esa fue una explicación muy útil ..... –

+0

¡explicación perfecta! – julestruong

3

El "tipo" hace referencia al tipo de unión realizado en su solicitud. De mejor a peor, aquí está la lista:

  • sistema
  • const
  • eq_ref
  • ref
  • gama
  • índice
  • todo

Encontrará una explicación más detallada en MySQL d OCUMENTACIÓN: http://dev.mysql.com/doc/refman/5.0/en/explain-output.html

+0

sí, gracias, pero no estoy buscando eso ... he entendido qué sistema y const significan en ese tipo ... pero ¿qué significa eq_ref y ref? He leído la explicación en la documentación de mysql pero no pude entenderlo ... –

Cuestiones relacionadas