Ir para conteúdo
Fórum Script Brasil
  • 0

[Resolvido] Query muito lenta


Guest Rangel

Pergunta

Olá,

Gostaria da ajuda de vocês. Tenho essa rotina abaixo e quando executo a consulta no banco de dados ela demora mais de 30 segundos para me retornar o resultado na tela. Uso banco oracle e no PL\SQL a consulta demora 2 segundos. Quando eu comento a parte do WHILE a consulta demora 3 segundos na página.

Rem ******************************************

Rem *** Monta lista de cursos ensino médio ***

Rem ******************************************

sql = " SELECT COD_INSTITUICAO_ENSINO_MEDIO, "

sql = sql & " NOM_INSTITUICAO_ENSINO_MEDIO, "

sql = sql & " SGL_UF "

sql = sql & " FROM SIA.INSTITUICAO_ENSINO_MEDIO"

sql = sql & " ORDER BY NOM_INSTITUICAO_ENSINO_MEDIO"

set oRs = objConn.Execute(sql)

lstEnsinoMedio = " <select name='lstCodInstituicaoEnsinoMedio' size=4 onClick='instituicaoEnsinoMedio();'>"

while not oRs.eof

if clng(session("COD_INSTITUICAO_ENSINO_MEDIO")) = clng(oRs("COD_INSTITUICAO_ENSINO_MEDIO")) then

selecionou = true

seleciona = " selected "

else

seleciona = " "

end if

lstEnsinoMedio = lstEnsinoMedio & " <option value='" & oRs("COD_INSTITUICAO_ENSINO_MEDIO") & "' value2='" & oRs("SGL_UF") & "' value3='" & oRs("NOM_INSTITUICAO_ENSINO_MEDIO") & "' " & seleciona & ">" & oRs("NOM_INSTITUICAO_ENSINO_MEDIO") & " - " & oRs("SGL_UF") & "</option>"

oRs.movenext

wend

seleciona = ""

if selecionou = false then

seleciona = " selected "

end if

lstEnsinoMedio = lstEnsinoMedio & " <option value='0' value2='' " & seleciona & ">Outros</select>"

lstEnsinoMedio = lstEnsinoMedio & "</select>"

set oRs = nothing

if clng(session("COD_INSTITUICAO_ENSINO_MEDIO")) > 0 then

desabEnsinoMedio = " disabled "

end if

Rem ***************

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Guest Visitante

1780 registros, crescendo na frequencia de 1 por semana.

Entendo que o problema acontece dentro do while, pois quando comento o trecho de código a seguir ele me retorna em 5 segundos.

lstEnsinoMedio = lstEnsinoMedio & " <option value='" & oRs("COD_INSTITUICAO_ENSINO_MEDIO") & "' value2='" & oRs("SGL_UF") & "' value3='" & oRs("NOM_INSTITUICAO_ENSINO_MEDIO") & "' " & seleciona & ">" & oRs("NOM_INSTITUICAO_ENSINO_MEDIO") & " - " & oRs("SGL_UF") & "</option>"

entendo que o problemas está aqui...

Grato

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Montar dentro do HTML de que forma?? Essa variável preenche uma list... Cada vez que o loop do while roda ele faz essa query...

Não seria melhor se eu transformasse essa variável em Array??

Link para o comentário
Compartilhar em outros sites

  • 0

E aí pessoal!

O webdeveloper tem razão. O melhor é, ao invés de...

lstEnsinoMedio = lstEnsinoMedio & " <option value='" & oRs("COD_INSTITUICAO_ENSINO_MEDIO") & "' value2='" & oRs("SGL_UF") & "' value3='" & oRs("NOM_INSTITUICAO_ENSINO_MEDIO") & "' " & seleciona & ">" & oRs("NOM_INSTITUICAO_ENSINO_MEDIO") & " - " & oRs("SGL_UF") & "</option>"
usar...
Response.Write " <option value='" & oRs("COD_INSTITUICAO_ENSINO_MEDIO") & "' value2='" & oRs("SGL_UF") & "' value3='" & oRs("NOM_INSTITUICAO_ENSINO_MEDIO") & "' " & seleciona & ">" & oRs("NOM_INSTITUICAO_ENSINO_MEDIO") & " - " & oRs("SGL_UF") & "</option>"

Mas isso pode não ser suficiente.

Com não terá paginação, é necessário descarregar o buffer com o método Response.Flush a cada, por exemplo, 100 registros. Isso evitará o estouro do buffer.

Espero ter ajudado!

[]'s a todos!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Resolvi mais cedo e entrei aqui pra ajudar se alguém por acaso tivesse uma dúvida parecida. Agradeço a todos que ajudaram!!!

ANTIGO

Rem ******************************************
Rem *** Monta lista de cursos ensino médio ***
Rem ******************************************
sql = " SELECT COD_INSTITUICAO_ENSINO_MEDIO, " 
sql = sql & " NOM_INSTITUICAO_ENSINO_MEDIO, "
sql = sql & " SGL_UF "
sql = sql & " FROM SIA.INSTITUICAO_ENSINO_MEDIO"
sql = sql & " ORDER BY NOM_INSTITUICAO_ENSINO_MEDIO"
set oRs = objConn.Execute(sql)

lstEnsinoMedio = " <select name='lstCodInstituicaoEnsinoMedio' size=4 onClick='instituicaoEnsinoMedio();'>"

while not oRs.eof
if clng(session("COD_INSTITUICAO_ENSINO_MEDIO")) = clng(oRs("COD_INSTITUICAO_ENSINO_MEDIO")) then
selecionou = true
seleciona = " selected "
else
seleciona = " " 
end if 

lstEnsinoMedio = lstEnsinoMedio & " <option value='" & oRs("COD_INSTITUICAO_ENSINO_MEDIO") & "' value2='" & oRs("SGL_UF") & "' value3='" & oRs("NOM_INSTITUICAO_ENSINO_MEDIO") & "' " & seleciona & ">" & oRs("NOM_INSTITUICAO_ENSINO_MEDIO") & " - " & oRs("SGL_UF") & "</option>"

oRs.movenext
wend 

seleciona = ""

if selecionou = false then
seleciona = " selected "
end if


lstEnsinoMedio = lstEnsinoMedio & " <option value='0' value2='' " & seleciona & ">Outros</select>"
lstEnsinoMedio = lstEnsinoMedio & "</select>"

set oRs = nothing

if clng(session("COD_INSTITUICAO_ENSINO_MEDIO")) > 0 then
desabEnsinoMedio = " disabled "
end if

Rem ***************
NOVO
Function lstEnsinoMedio()
  Rem ******************************************
  Rem *** Monta lista de cursos ensino médio ***
  Rem ******************************************
  sql =       " SELECT COD_INSTITUICAO_ENSINO_MEDIO, "  
  sql = sql & " NOM_INSTITUICAO_ENSINO_MEDIO, "
  sql = sql & " SGL_UF "
  sql = sql & " FROM SIA.INSTITUICAO_ENSINO_MEDIO"
  sql = sql & " ORDER BY NOM_INSTITUICAO_ENSINO_MEDIO"
  set oRs = objConn.Execute(sql)
  
  response.Write(" <select name='lstCodInstituicaoEnsinoMedio' size=4 onClick='instituicaoEnsinoMedio();'>")
    
  while not oRs.eof
        if clng(session("COD_INSTITUICAO_ENSINO_MEDIO")) = clng(oRs("COD_INSTITUICAO_ENSINO_MEDIO")) then
           selecionou = true
           seleciona = " selected "
        else
           seleciona = " "   
        end if 
        
        response.Write(" <option value='" & oRs("COD_INSTITUICAO_ENSINO_MEDIO") & "' value2='" & oRs("SGL_UF") & "' value3='" & oRs("NOM_INSTITUICAO_ENSINO_MEDIO") & "' " & seleciona & ">" & oRs("NOM_INSTITUICAO_ENSINO_MEDIO") & " - " & oRs("SGL_UF") &  "</option>")
        
        oRs.movenext
  wend 
  
  seleciona = ""
  
  if selecionou = false then
     seleciona = " selected "
  end if

  response.Write("<option value='0' value2='' " & seleciona & ">Outros</select>")
  response.Write("</select>")
  
  set oRs = nothing
  
  if clng(session("COD_INSTITUICAO_ENSINO_MEDIO")) > 0 then
     desabEnsinoMedio = " disabled "
  end if

Rem ***************
End Function

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...