Oracle
 sql >> Database >  >> RDS >> Oracle

fare in modo che l'ottimizzatore utilizzi tutte le colonne di un indice

abbiamo effettivamente trovato la causa di questo problema. Stiamo utilizzando JPA/JDBC e i tipi di data JDBC non sono stati modellati correttamente. Mentre il tipo di data dell'oracolo è con una seconda precisione, qualcuno (ora lo odio) ha creato l'attributo "giorno" nella nostra entità di tipo java.sql.Timestamp (sebbene sia solo un giorno senza tempo). L'effetto è che Oracle avrà bisogno per eseguire il cast (utilizzare una funzione su) ogni voce nella tabella per renderla un timestamp prima che possa essere confrontata con il parametro della query Timestamp. In questo modo l'indice non può essere utilizzato correttamente.