Unisteffo

Basi di dati

Visualizzazioni utili

B+ Tree

Link

Calcolo dei costi delle query

SimboloDescrizione
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

Fattore booleano

Espressione formata da una o più condizioni moltiplicate tra loro.

Argomenti di ricerca attraverso indice

Condizioni che soddisfano i seguenti requisiti:

  • Usa uno dei seguenti operatori:
    • BETWEEN
    • OR (solo in alcuni DBMS)
  • Uno dei due termini del confronto è una colonna della tabella
  • L'altro termine del confronto è una costante numerica

Indici

È 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.

Fattore di selettività

La percentuale di tuple di una tabella che soddisfano una condizione.

CondizioneFattore di selettività
col = $costante
col != $costante
col1 != col2
IN
col > $costante
col < $costante
col BETWEEN $lower AND $upper
cond1 OR cond2

Costo di accesso

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.

Nel calcolo del costo di una query, si considerano tutti i cambi di pagina come page fault.

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à:

Costo di join

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!