2010-12-22 13 views

cevap

14

...

eq_ref - Eğer iki tablo olduğunu düşünün. Kimliği birincil anahtar olan sütunlarla (kimlik, metin) bulunan Tablo A. Kimliği, birincil anahtar olan aynı sütunlara (kimlik, metin) sahip Tablo B. Çok hızlı çünkü

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

Bu KATILDIĞI

1, world! 
2, you? 

A ve B arasındaki birleşim olarak eq_ref düşünün:

1, Hello 
2, How are 

Tablo B, aşağıdaki verileri var Tablo A, aşağıdaki verileri yer alır Tablo A'da taranan her satır için, B tablosunda JOIN koşulunu karşılayan sadece ONE satırı olabilir. Bir ve birden fazla değil. Bunun nedeni B.id'in UNIQUE olmasıdır. Burada sunucu tarafında işlemeyi gösteren bir sözde kod şunlardır:

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

ref - Şimdi sütunlarla başka tablo C (id, metin) hayal hangi kimliği bir indeks ama olmayan bir EŞSİZ bir yer.

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

} 
: Burada

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

sunucu tarafındaki işleme gösteren bir sahte kod gibidir: A ve C arasında katılmak gibi

1, John! 
1, Jack! 

ref düşünün: Tablo C, aşağıdaki verileri yer alır

Bu JOIN, birincisi kadar hızlı DEĞİL, çünkü tablo A'da taranan her satır için, JOIN con'yu tatmin edebilen C tablosunda SEVERAL olası satırları var dition (yukarıdaki döngüde kesinti yok). Çünkü C.ID, UNIQUE DEĞİLDİR.

Bunu umut olur ...

Cheerz!

+0

teşekkürler dostum, anladım .... Bu gerçekten yararlı bir açıklama oldu ..... –

+0

mükemmel bir açıklama! – julestruong

3

"type", isteğinize bağlı birleştirme türünü belirtir.

  • sistem
  • const
  • eq_ref
  • ref
  • aralık
  • endeksi
  • tüm

Sen bulacaksınız: En iyi itibaren en kötü, burada listesidir MySQL d'de daha ayrıntılı bir açıklama ocumentation: Bir açıklama çalışacağım http://dev.mysql.com/doc/refman/5.0/en/explain-output.html

+0

evet, teşekkür ederim, ama bunu aramıyorum ... Bu sistemde hangi sistemin ve kurgunun anlamını anladım .... ama eq_ref ve ref ne anlama geliyor? Ben mysql belgelerindeki açıklamaları okudum ama anlayamadım .... –