Lentidão ao executar Query

11 respostas
M

Pessoal, tenho uma página que apresenta lentidão ao abrir (20 segundos), e debugando descobri que a lentidão está na linha rs = sql.executeQuery();, já que se eu tirar o iterator da página abre rapidinho!! então imaginei que fosse sql torto, mas ao executar no PL/SQL Developer ele executa de 2 a 3 segundos, que é um tempo normal pra estrutura da query. Ah, ele retorna em torno de 500 registros, super pouco para o tempo que está levando pra executar o ResultSet.

Alguém sabe de algum caso parecido e que teve solução ??

Valew.

11 Respostas

T

vc executou no pl/sql na rede ou na máquina com o banco ?

maquiavelbona

Qual é o número de conexões/requisições simultâneas está fazendo? Pode ser que esteja enfileirando e/ou bloqueando novas requisições, tornando o processamento mais lento.

Até!

thiago.correa

Marcelo, quando você executa uma query no pl/sql ou toad ele não a executa toda, agora se você percorrer todos os registros você verá que o resultado não é tão rápido, eu sei que no pl/sql para mostrar todos os registros o atalho, na janela de sql, é alt + end. Verifique se você não está usando funções em constraints, isso mata muito a performance da query, joins mal feitos também. Espero ter ajudado

andredeividi

Veja os seus filtros e verifique os indeces.

Abraço

nbluis

poste parte de seu codigo da iteração para vermos…

erickcellani

fique tranqüilo em relação ao metodo executeQuery();
o problema naum está nele (se é isso que vc está pensando)

mas siga as dicas dos amigos acima… veja o número de conexões, filtros…

:slight_smile:

M

O estranho é que além de trazer os dados paginados, eu tenho outras páginas que executam querys semelhantes e são rapidinhas !!!

Fiz um teste aqui, no lugar dos parametros coloquei valores fixos e abriu bem mais rápido!!! Será que é algum problemas nos parametros ?? qual ??

Obrigado a todos.

erickcellani

como vc está passando os paramentros???

por concatenação???

erickcellani

noss q bobeira que eu falei… desconsidera… rsrs… por favor…
mas enfim… como vc está passando os parametros?

M

erickcellani:
noss q bobeira que eu falei… desconsidera… rsrs… por favor…
mas enfim… como vc está passando os parametros?

Assim:

sql = cnct.conn.prepareStatement  ("SELECT ...... ");

sql.setString(1, usuario);
sql.setString(2, username);
sql.setString(3, username);
sql.setInt(4, Integer.parseInt(id_tabela_base));
sql.setInt(5, Integer.parseInt(id_tabela_base));
sql.setInt(6, Integer.parseInt(situacao));
sql.setInt(7, Integer.parseInt(situacao));
sql.setInt(8, Integer.parseInt(situacao));

rs = sql.executeQuery();

while (rs.next()) { ... }
M

Galera, acho que achei a solução graças às dicas de vocês!!!

Tinha uma FK sem índice criado e que é usada no WHERE, então criei um índice pra ela e ficou rapidinho !!!

Obrigado a todos.

Criado 23 de maio de 2007
Ultima resposta 24 de mai. de 2007
Respostas 11
Participantes 7