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

Query lenta in Java da parte di JDBC ma non in altri sistemi (TOAD)

senza ulteriori informazioni, possiamo solo presumere che non venga utilizzato un indice con la funzione to_number() applicata alla colonna. Come mostrato in questa domanda SO , una conversione di tipo può impedire all'ottimizzatore di utilizzare un indice.

In generale:

  • quando aggiungi una funzione a una colonna (es:to_number(id) ) l'ottimizzatore non sarà in grado di utilizzare gli indici normali su quella colonna,
  • se è possibile, dovresti usare la colonna raw. Ad esempio:invece di WHERE trunc(col) = DATE '2009-08-27' dovresti usare:WHERE col >= DATE '2009-08-27' AND col < DATE '2009-08-28'
  • se devi davvero applicare una funzione a una colonna, puoi utilizzare un indice basato su funzioni