Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vitorlouzada

Lentidão em consulta mysql dentro de um List Menu

Recommended Posts

Caros Amigos,

 

Estou passando por algumas dificuldades para carregar um formulário que necessita de dois select que obtem informações de tabelas de um banco de dados mysql para serem exibidas.

 

São dois selects que em um necessita carregar mais de 2000 nomes e no outro 9000.. a página está ficando cada vez mais lenta para ser carregada, talvez exista alguma outra forma de se fazer isso, evitando que fique muito lento para carregar a página.

 

Segue abaixo como tenho feito o select:

 

<select name="cliente" class=campos_formulario id="cliente" style="width=350" onChange="desabilita_cor(this)" df_verificar="sim">



         <option value=""></option>

           <%

 Set objRS8 = Server.CreateObject("ADODB.Recordset")
objRS8.CursorLocation = 3
objRS8.CursorType = 2
objRS8.LockType = 1
objRS8.PageSize = 15000
   st_noticias = "SELECT Nome FROM clientes ORDER BY Nome ASC"
   objRS8.Open st_noticias, objCon, , , &H0001

 %>   

     <%
For Cont = 1 to objRS8.PageSize
%>


         <OPTION value="<%=(objRS8.Fields.Item("Nome").Value)%>"><%=(objRS8.Fields.Item("Nome").Value)%></OPTION>

           <%
 objRS8.MoveNext
 If objRS8.Eof then Exit For
Next
Set Cont = Nothing
%>


       </select>

 

 

<select name="emitente" class=campos_formulario id="cliente" style="width=350" onChange="desabilita_cor(this)" df_verificar="sim">



         <option value=""></option>

           <%

 Set objRS9 = Server.CreateObject("ADODB.Recordset")
objRS9.CursorLocation = 3
objRS9.CursorType = 2
objRS9.LockType = 1
objRS9.PageSize = 15000
   st_emitente = "SELECT Nome FROM emitente ORDER BY Nome ASC"
   objRS9.Open st_emitente, objCon, , , &H0001

 %>   

     <%
For Cont = 1 to objRS9.PageSize
%>


         <OPTION value="<%=(objRS9.Fields.Item("Nome").Value)%>"><%=(objRS9.Fields.Item("Nome").Value)%></OPTION>

           <%
 objRS9.MoveNext
 If objRS9.Eof then Exit For
Next
Set Cont = Nothing
%>


       </select>

 

 

Fico aguardando a ajuda de vocês, desde já agradeço.. lembrando que minha necessidade é carregar essas informações de forma mais rápida para evitar lentidão...

Compartilhar este post


Link para o post
Compartilhar em outros sites

:joia: Vinicius tudo bem!!!

 

Vamos pensar no seguinte, você quer melhorar um processo que apresenta lentidao, certo? Como você trabalha numa funcionalidade utilizando o ASP, procure nao recorrer muito a outras tecnologias como AJAX ou outra qualquer, mais proximo algo em JavaScript, pois no AJAX poderá dar-lhe mais trabalho para implementar, entao por estar trabalhando com ASP, procure coisas voltadas para o ASP que possam melhorar a sua situação, pois assim o aprendizado fica mais em linha reta, segue abaixo três coisas que eu posso recomendar para você testar em sua aplicação para ver se melhorará o desempenho:

 

1) Antes de todos os SELECT's acima dele utilize assim variavel = Empty() como no exemplo abaixo:

 

st_noticias = Empty()

st_noticias = "SELECT Nome FROM clientes ORDER BY Nome ASC"

 

st_emitente = Empty()

st_emitente = "SELECT Nome FROM emitente ORDER BY Nome ASC"

 

-> O SELECT sempre estará em looping, entao quando for começar a rodar novamente ele já começaria vazio, assim melhoraria a performance.

 

2) Muitos programadores mais experientes já me recomendaram usar o do until / Loop, mais rapido do que o tradicional do while, procure pesquisar a respeito. Veja um exemplo abaixo e tente implementar.

 

 

<%

set conn=Server.CreateObject("ADODB.Connection")

conn.Provider="Microsoft.Jet.OLEDB.4.0"

conn.Open "c:/webdata/northwind.mdb"

 

set rs = Server.CreateObject("ADODB.recordset")

rs.Open "SELECT * FROM Customers", conn

 

do until rs.EOF

for each x in rs.Fields

Response.Write(x.name)

Response.Write(" = ")

Response.Write(x.value & "<br />")

next

Response.Write("<br />")

rs.MoveNext

loop

 

rs.close

 

conn.close

%>

 

3) Percebi que usa no PageSize = 15000, puxa tente diminuir isso ai e também sempre veja o tipo de dado que é seu campo da tabela, isso influência com lentidão em Sistemas Web.

 

Espero que essas dicas sejam boas e validas a você.

 

 

Até mais.

Leandro de Azevedo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.