Alle superiori, abbiamo trattato molto in dettaglio le
In compenso, abbiamo pubblicato il
Simbolo | Descrizione |
---|---|
Numero di tuple di una tabella | |
Numero di blocchi di una tabella | |
Numero di foglie di un indice | |
Numero di indici presenti in una tabella | |
Numero di valori unici presenti in una colonna | |
Fattore di selettività di una condizione | |
Costo di accesso a una o più tuple | |
Numero di tuple del risultato |
Espressione formata da una o più condizioni moltiplicate tra loro.
Condizioni che soddisfano i seguenti requisiti:
{r`BETWEEN`}
{r`OR`}
(solo in alcuni DBMS)È possibile costruire indici sulle colonne di una tabella per velocizzare le query che riguardano quelle colonne.
In particolare, ogni tabella può avere un indice clustered e infiniti indici unclustered.
Generalmente, l'indice clustered è costruito sulla colonna della primary key, ma non è sempre quello il caso.
Gli indici vanno tenuti aggiornati, e ciò ha un costo di manutenzione:
DELETE
: UPDATE
: È possibile usare gli indici nelle query solo per gli argomenti di ricerca attraverso indice.
La percentuale di tuple di una tabella che soddisfano una condizione.
Condizione | Fattore di selettività |
---|---|
col = $costante |
|
col != $costante |
|
col1 != col2 |
|
IN |
|
col > $costante |
|
{r`col < $costante`} |
|
col BETWEEN $lower AND $upper |
|
cond1 OR cond2 |
Quante unità di lavoro costa accedere a una specifica relazione:
Per accedere attraverso un indice a una specifica tupla della relazione, si spenderà:
Se le tuple a cui si vuole accedere sono più di una, allora, il costo dipenderà da se l'indice è clustered o non-clustered.
Per gli indici clustered, visto che basta caricare in memoria i blocchi in sequenza, il costo sarà:
Per gli indici unclustered, per i quali potremmo dover caricare e rimuovere lo stesso blocco dalla memoria più volte, il costo sarà:
Se si stanno effettuando query su più indici unclustered, il costo sarà:
Quante unità di lavoro costa effettuare un join tra due relazioni.
Varia in base al metodo di join utilizzato.
Utilizzando il metodo del nested loop:
La scelta della colonna su cui iterare è quindi importante!