PrepareStatement ou Statement?

Galera, saudações!

Curiosamente consegui fazer uma consulta ficar muito mais rápido utilizando Statement ao invés de PrepareStatement. A diferença foi absurda, com PrepareStatement levava mais de 2 minutos e com Statement é na hora.

O banco utilizado é DB2.

A pergunta é, o PrepareStatement não deveria ser mais rápido? Será que o banco de dados (DB2) pode influenciar?

[i]Statement

usado para executar um comando SQL estático e devolvendo os resultados que produz.

PreparedStatement

Um objeto que representa um precompilada SQL.

A instrução SQL é compilada e armazenada em um objeto PreparedStatement. Este objeto pode então ser usada para executar eficientemente esta afirmação várias vezes.

como a interface Statement executa comandos SQL’s estáticos
pode ser que seja isso o tempo de resposta

Mas tenho encontrado na internet comentários falando que o PrepareStatement tem um melhor desempenho em relação ao Statement. Por isso minha dúvida.

sim, ja vi alguns comentarios que é melhor, tbm acredito que seja, mais nao posso afirmar, pois nunca trabalhei com a interface Statement.

no seu sistema voce usa muito banco de dados, tipo select, insert, update…?

Sim, porque?

voce poderia usar hibernate tbm …

conhece hibernate?

Também utilizo hibernate.

A questão mesmo é a diferença de performance entre o PrepareStatement e o Statement.

De fato, o DB2 não é muito rápido para a primeira vez que você cria o PreparedStatement, mas se o tal PreparedStatement for reusado (ou seja, a mesma ou outra aplicação usa exatamente A MESMA STRING SQL no PreparedStatement, embora os parâmetros possam e devam ser diferentes), a execução será mais rápida.

E ae Thingol,

Era justamente esse conhecimento que eu buscava. DB2 é triste até nisso… =/

Bom, tens idéia como fica esse cache quando fechamos o PrepareStatement? Provavelmente sai do cache né?

De qualquer forma, não irei reutilizar a string SQL, portanto, utilizarei Statement.

Agora tenho que ficar ligado com o PS pois estou utilizando DB2.

Valeu Thingol, abraço!