Rabbrividisco ogni volta che vedo commenti che le tabelle complete sono cattive e l'accesso all'indice è buono. Scansioni complete di tabelle, scansioni di intervalli di indici, scansioni di indici complete e veloci, cicli annidati, merge join, hash join ecc. Sono semplicemente meccanismi di accesso che devono essere compresi dall'analista e combinati con una conoscenza della struttura del database e lo scopo di una query in per giungere a qualsiasi conclusione significativa.
Una scansione completa è semplicemente il modo più efficiente di leggere una gran parte dei blocchi di un segmento di dati (una tabella o una partizione di tabella (sotto)) e, sebbene spesso possa indicare un problema di prestazioni, questo è solo nel contesto se è un meccanismo efficiente per raggiungere gli obiettivi della query. Parlando come un data warehouse e un ragazzo di BI, il mio flag di avvertimento numero uno per le prestazioni è un metodo di accesso basato su indice e un ciclo annidato.
Quindi, per il meccanismo di come leggere un piano di spiegazione, la documentazione di Oracle è una buona guida: http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/ex_plan.htm#PFGRF009
Buona lettura anche della Guida all'ottimizzazione delle prestazioni.
Avere anche un google per "feedback di cardinalità", una tecnica in cui un piano di spiegazione può essere utilizzato per confrontare le stime di cardinalità in varie fasi di una query con le cardinalità effettive sperimentate durante l'esecuzione. Wolfgang Breitling è l'autore del metodo, credo.
Quindi, in conclusione: capire i meccanismi di accesso. Comprendi il database. Comprendi l'intenzione della query. Evita le regole pratiche.