PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

A quale cardinalità SQL Server passa a una scansione dell'indice (rispetto alla ricerca)

In termini di SQL Server, questo è stato definito il punto di svolta, di cui il post sul blog di Kimberley è una buona lettura. http://www.sqlskills.com/BLOGS/KIMBERLY /categoria/The-Tipping-Point.aspx

Il punto di non ritorno è una linea guida del 25%-33% del numero totale di pagine all'interno della tabella, espresso in righe, ad es. 10.000 pagine di dati darebbero un punto di non ritorno di 2500-3333 righe. Per quanto riguarda le linee guida, questo è abbastanza buono e per quanto buono otterrai:ricorda che il motore del piano di query è una scatola nera e, sebbene ti fornirà un piano di query, dice solo ciò che ha deciso, non il motivo.

In termini di ribaltamento di un indice di copertura, tuttavia, non è in realtà molto facile, anche con il 100% dei dati selezionato, un indice di copertura cercherà comunque di eseguire una scansione eccessiva nella maggior parte dei casi.

Ciò ha senso, se si considera che l'ottimizzatore dei costi non assegna alcun costo reale alla gerarchia delle pagine dell'indice, qualsiasi costo aumenta solo l'accesso alle pagine foglia dell'indice. A quel punto, la scansione o la ricerca del 100% di un indice di copertura ha lo stesso costo.

L'ho trovato dalla mia stessa sperimentazione (http://sqlfascination.com/2009/11/07/can-a-covering-nc-index-be-tipped ) l'utilizzo di una clausola between ne causerebbe la scansione, ma altre clausole where non lo farebbero, da quello che ho potuto dire che dipendeva esclusivamente dal percorso attraverso il motore di query.