Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Lassen Sie den Optimierer alle Spalten eines Index verwenden

Wir haben tatsächlich die Ursache für dieses Problem gefunden. Wir verwenden JPA/JDBC und die JDBC-Datumstypen wurden nicht korrekt modelliert. Während der Orakel-Datumstyp mit zweiter Genauigkeit ist, hat jemand (ich hasse ihn jetzt) ​​das Attribut "Tag" in unserer Entität vom Typ java.sql.Timestamp erstellt (obwohl es nur Tag ohne Zeit ist). Der Effekt ist, dass Oracle benötigt um jeden Eintrag in der Tabelle umzuwandeln (eine Funktion zu verwenden), um ihn zu einem Timestamp zu machen, bevor er mit dem Timestamp-Abfrageparameter verglichen werden kann. Auf diese Weise kann der Index nicht richtig verwendet werden.