| 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:
BETWEENOR (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 | |
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!