Otimizando o Script ASP
Fala galerinha ^^
Bem, um assunto interessante e que pode acabar ajudando algumas pessoas aqui do fórum (isso se conseguirmos descobrir se tem como)!
Seguinte, vou colocar um afot que pode ocorrer: Tenho uma site com um banco de dados gigante, cerca de 50 mil cadastros em mais de 30 campos em uma mesma tabela. Uma busca simples dentro disso seria razoavelmente rápida, porém, o caso é que cerca de 100 pessoas acessam essa tabela a cada minuto e isso sim gera um gasto gigante no servidor. Então, procurando aqui na internet achei uma matéria boa, mas eu não sei se funciona, falando do uso do comando MaxRecords ao abrir, limitando assim o conteúdo aberto do banco de dados.
Porém surge um probleminha, toda vez que é aberta uma tabela no banco de dados pelo script ele gera uma busca e não tem como saber se esta busca será feita encontrando 10 ou 50 ou 100 ou até 1000 registros, então fica complicado usar o MaxRecords e setar ele com um limite de 10 (por exemplo).
Então, num flash básico na minha cabeça surgiu a idéia de antes disso, efetuar uma contagem de possíveis resultados pra só então setar o MaxRecords com o resultado encontrado.
Vou dar um exemplo:
<%
connstring = "dsn=banco;uid=usuario;pwd=senha"
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open connString
Set rstContagem = Conn.Execute("SELECT Count(Id) FROM hoteis WHERE dados='dadosimaginários'")
If rstContagem.EOF Then
Contagem = 0
Else
Contagem = rstContagem(0)
End If
rstContagem.Close
Set rstContagem = Nothing
sql = "SELECT * FROM hoteis WHERE dados='dadosimaginários' ORDER BY diaria desc"
Set rstTemp = Server.CreateObject("ADODB.RecordSet")
rstTemp.MaxRecords = Contagem 'Aqui entraria o número encontrado pela contagem
rstTemp.Open sql, connstring
Do while not rstTemp.Eof
Response.Write(rstTemp("Hotel") & " - " & rstTemp("Diaria"))
rstTemp.MoveNext
Loop
'continua e fecha tudo que ta aberto!
%>
Então, usando isso ele abriria somente os dados realmente encontrados com a contagem ao invés de abrir todos os registros e procurar o que falta.
O script eu refiz aqui como exemplo, nem sei se funciona, pode ter erro pois é complicado usar o editor pra fazer isso sem ter erros.
Mas a idéia é essa, usando a propriedade Maxrecords a idéia é ele abrir somente aquela quantidade destinada ao invés de abrir todas e então fazer a busca.
Na matéria que eu tinha visto isso otimizaria o script pouco, mas como o exemplo aqui é sobre muitos acessos, este pouco se torna muitos ^^
O problema é que na matéria não falava em usar uma rotina pra contar os resultados, falava apenas em usar o Maxrecords com um número X pra limitar a busca no banco de dados e eu fiquei na dúvida se quando eu for fazer uma contagem eu vá acabar abrindo todo ele pra contar e depois abrindo ele só pra mostrar a quantidade certa, isso resultaria no dobro da operação então seria mais simples e mais otimizado se eu nem usar o Maxrecords.
Acho que expliquei direito, qualquer coisa me avisem q eu refaço ou vou dizendo o que é que ta faltando pra compreensão de todos.
Uma abração,
Jean
Discussão (11)
Carregando comentários...