ho scritto un complesso di query di Oracle SQL e spiegare statistiche piano assomigliano a questo: Costo: 209.201 Byte: 187.944.150 cardinalità: 409.675Oracle spiegare piano: cardinalità restituisce un numero enorme ma la query non restituisce alcun record
Ora DBA ha sintonizzato la query e le statistiche hanno questo aspetto: Costo: 42.996 byte: 89.874.138 Cardinalità: 209.226
La mia prima domanda è: se i numeri sono inferiori, significa automaticamente prestazioni migliori? Quale numero è il più efficace? Costo/Cardinalità/Byte? La mia seconda domanda è: capisco che la cardinalità è il numero di righe lette. Ma quando eseguo la query, restituisce le righe '0'! La mia impressione è che Cardinality debba essere uguale per due query che dovrebbero restituire gli stessi set di risultati. Questo credo sia sbagliato?
La cardinalità è (in poche parole) il numero di righe che l'ottimizzatore _thinks_ sarà necessario; a seconda di molti fattori, incluso il livello delle statistiche, potrebbe essere sbagliato. – Ben
Grazie. Puoi spiegare cos'è BYTES? – Victor
@Kaushik: Dalla documentazione, 'BYTES' è" Stima secondo l'approccio di ottimizzazione della query del numero di byte a cui accede l'operazione. " Ma questo è fuorviante, è in realtà il numero di byte * restituiti * dall'operazione. Ad esempio, se hai una scansione completa della tabella, leggerà ogni byte nella tabella, ma 'BYTES' è la stima della dimensione * dopo * eventuali filtri. http://docs.oracle.com/cd/E11882_01/server.112/e16638/ex_plan.htm#r22c1-t12 –