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?
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
ricardo.longa
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.
Regis_A_Rocha
sim, ja vi alguns comentarios que é melhor, tbm acredito que seja, mais nao posso afirmar, pois nunca trabalhei com a interface Statement.
Regis_A_Rocha
no seu sistema voce usa muito banco de dados, tipo select, insert, update…?
ricardo.longa
Sim, porque?
Regis_A_Rocha
voce poderia usar hibernate tbm …
conhece hibernate?
ricardo.longa
Também utilizo hibernate.
A questão mesmo é a diferença de performance entre o PrepareStatement e o Statement.
T
thingol
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.
ricardo.longa
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.