PDA

View Full Version : [MySQL] SELECT su una tabella con chiave doppia


0rph3n
09-11-2006, 08:37
hola hola, buona giornata a tutti (madò che sonno)!
qualcuno sa dirmi se in una tabella che ha come chiave due campi varchar (campo1, campo2) e ha solo l'indice relativo alla chiave primaria, nel caso in cui faccio una select in cui pongo una condizione su uno dei due campi che compongono la chiave, il db riesce ad usare l'indice?

grassie

shinya
09-11-2006, 13:09
hola hola, buona giornata a tutti (madò che sonno)!
qualcuno sa dirmi se in una tabella che ha come chiave due campi varchar (campo1, campo2) e ha solo l'indice relativo alla chiave primaria, nel caso in cui faccio una select in cui pongo una condizione su uno dei due campi che compongono la chiave, il db riesce ad usare l'indice?

grassie

Dipende dall'ottimizzatore. Non conosco così bene MySQL, ma in Oracle ad esempio esiste una modalità di accesso agli indici detta "skip scan", grazie alla quale il db è in grado di "saltare" delle colonne dell'indice.

Ma non è detto che accedere all'indice sia sempre la scelta migliore. Se l'indice è poco selettivo (cioè se gli tocca accedere ad una percentuale di dati maggiore del 20% circa della tabella, ma dipende dai casi), conviene di gran lunga leggere l'intera tabella.

Ma MySQL magari è diverso...ti conviene leggere la documentazione.