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:
BETWEEN
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 | |
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!