Ir para conteúdo

POWERED BY:

Arquivado

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

desisto

otimizar este codigo

Recommended Posts

a melhor forma seria usando join?

nao faco ideia como 'juntar'

bd1 = "SELECT * FROM ENDERECO WHERE ENDERECO_CEP='"&cep&"'"
Set rs1 = conn.execute(bd1)

bd2 = "SELECT * FROM BAIRRO WHERE BAIRRO_CODIGO='"&rs1("BAIRRO_CODIGO")&"'"
Set rs2 = conn.execute(bd2)

bd3 = "SELECT * FROM CIDADE WHERE CIDADE_CODIGO='"&rs2("CIDADE_CODIGO")&"'"
Set rs3 = conn.execute(bd3)

bd4 = "SELECT * FROM UF WHERE UF_CODIGO='"&rs3("UF_CODIGO")&"'"
Set rs4 = conn.execute(bd4)

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o objetivo do código?

 

Poste a estrutura das tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

kara fiz rapião aqui não sei se esta correto até porque não mandou a estrutura completa dos 4 selects(tabelas)

 

se liga ai muda para seus campos

 

SQL = "SELECT * FROM UF " & _
" INNER JOIN CIDADE ON " & _
"	UF.CODIGO_UF = CIDADE.COD_UF " & _
" INNER JOIN BAIRRO ON " & _
"	BAIRRO.CODIGO_CIDADE = CIDADE.CODIGO_CIDADE AND BAIRRO.CODIGO_UF = CIDADE.COD_UF " & _
" INNER JOIN ENDERECO " & _
"	BAIRRO.COD_BAIRRO = ENDERECO.COD_BAIRRO AND ENDERECO.COD_CIDADE = BAIRRO.COD_CIDADE " & _
" WHERE "& _
" UF_CODIGO='"&rs3("UF_CODIGO")&"' AND"  & _
" CIDADE_CODIGO='"&rs2("CIDADE_CODIGO")&"' AND " & _
" BAIRRO_CODIGO='"&rs1("BAIRRO_CODIGO")&"' AND " & _
" ENDERECO_CEP='"&cep&"'"

Isso é para base SQL Server, se for access o inner join é diferente.

 

só select, use este estrutura abaixo para testar no sql

declare @UF_CODIGO varchar()
declare @CIDADE_CODIGO varchar()
declare @BAIRRO_CODIGO varchar()
declare @cep varchar()

-- carregue suas variaveis aqui.
set @UF_CODIGO = ''
set @CIDADE_CODIGO = ''
set @BAIRRO_CODIGO = ''
set @cep = ''


SELECT * FROM UF
INNER JOIN CIDADE ON 
	UF.CODIGO_UF = CIDADE.COD_UF 
INNER JOIN BAIRRO ON 
	BAIRRO.CODIGO_CIDADE = CIDADE.CODIGO_CIDADE AND BAIRRO.CODIGO_UF = CIDADE.COD_UF 
INNER JOIN ENDERECO 
	BAIRRO.COD_BAIRRO = ENDERECO.COD_BAIRRO AND ENDERECO.COD_CIDADE = BAIRRO.COD_CIDADE
WHERE
	UF_CODIGO = @UF_CODIGO AND
	CIDADE_CODIGO=@CIDADE_CODIGO AND
	BAIRRO_CODIGO=@BAIRRO_CODIGO AND
	ENDERECO_CEP=@cep

Lembre-se que fiz tudo sem base de dados apenas usando a logica, reveja a estrutura para o que se adapta a sua necessidade.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada nestes itens:

 

Cursores de Recordset

 

O tipo e a localização do cursor do recordset podem mudar drasticamente a performance da sua aplicação ASP.

 

A propriedade CursorLocation determina onde ficará o controle do cursor: Client ou Server. Sempre que possível utilize o cursor Server, se for necessário utilizar cursor Client, garanta que poucos registros serão retornados. O cursor Client traz todo o recordeset para a memória, e no caso de aplicação Web, fica na memória do Web-Server, um cursor Client com muitos registros em uma página que tem muitos acessos simultâneos pode gerar graves conseqüências.

 

A propriedade CursorType determina o tipo de cursor a ser usado: ForwardOnly, KeySet, Dynamic, Static. Em 90% dos casos o cursor ideal é o ForwardOnly pois é o cursor que tem menos recursos e menos custo. Evite atualizar, inserir e deletar registros através de cursores, prefira stored procedures ou instruções SQL.

 

 

 

Alternação entre códigos ASP e HTML '<% %>'

 

Evite ficar alternando entre códigos ASP e HTML <% %>, a alternação entre códigos afeta diretamente a performance da página.

Abaixo segue exemplo de como melhorar a performance de suas páginas retirando a alternação entre códigos:

 

Código de baixa performance:

'<%Do Until rsLinks.EOF %> 
'<a href="<%=rsLinks("URL")%>"><%=rsLinks("NomeSite") %></a> 
'<%rsLinks.MoveNext%> 
'<%Loop%>

Código de alta performance:

 

'<%Do Until rsLinks.EOF 
'Response.Write "<a href=""" & rsLinks("URL") & """>" & rsLinks("NomeSite") & "</a>" 
'rsLinks.MoveNext 
'Loop%>

Uso de funções / Variáveis de módulo

 

Nunca escreva grandes trechos de códigos diretamente nas páginas, no formato conhecido como código lingüíça. Use sempre Subs ou Functions para estruturar seu código. Um código bem estruturado facilita a manutenção e evita o uso desnecessário de recursos.

Limite-se ao uso de If ou Select Case e chamadas de funções diretamente na página.

Declare as variáveis dentro das funções ou subs, desta maneira menos recursos serão gastos. Em alguns casos são necessárias algumas variáveis de módulo para uso em várias funções, limite-se a variáveis de tipo simples (inteiras, strings, boleanas e etc), nunca declare variáveis do tipo Recordset fora de funções (em módulo).

 

 

Conversões Explicitas (Tipos de variáveis)

 

As linguagens de script não possuem tipos de variáveis declarados, para garantir a segurança e estabilidade de aplicação utilize sempre conversões ao atribuir valor às variáveis. Exemplo:

'intCdAssunto = CInt(Request.QueryString("CdAssunto"))

 

Includes

 

O uso de includes é muito útil e recomendado. Porém você precisa saber como os includes funcionam para utilizá-los de forma correta.

O Web-Server (IIS) substitui as chamadas dos includes pelos seus respectivos códigos antes de qualquer outra ação. Portanto a página ASP só será processada após todos os includes serem substituídos. Abaixo algumas dicas para o uso dos includes:

 

Não utilize includes de forma indiscriminada, pois quanto mais includes existirem em suas páginas mais tempo elas irão demorar para serem processadas.

Utilize os includes para uso de funções comuns.

Não utilize includes para estruturar o site, se uma página possuir um If ou um Select Case para escolher qual include utilizar, então, está na hora de você pensar em transformá-la em duas ou mais páginas distintas.

Nunca utilize duas chamadas do mesmo include na mesma página, se for necessário utilizá-lo duas ou mais vezes, transforme-o em uma função, declare o include no topo da página e efetue a chamada da função quantas vezes forem necessárias.

Evite o uso de includes dentro de includes, isso gera muita confusão no código.

 

Request

 

Evite o uso do Request("atributo"), sempre que possível utilize a coleção à qual você deseja efetuar o Request (Request.Form, Request.QueryString, Request.Cookies). O uso do Request deixa a página mais lenta.

 

Sessions

 

As variáveis de Session são muito úteis, porém perigosas. Uma variável Session ocupa espaço diretamente na memória RAM do servidor.

Recomenda-se armazenar em Session apenas o informações do tipo Id do usuário e controles de acesso, as demais informações devem ser armazenadas em Cookies

 

Você pode desabilitar o controle de Sessão em páginas que não necessitam, isso economiza recursos. Para desabilitar o controle de Sessão utilize o comando abaixo:

'<%@ EnableSessionState=False %>'

 

 

Leitura/Atribuição de Coleções (Request, Session, Application, Recordset, etc...)

A leitura e atribuição de valores à coleções é um processo lento, se sua página efetua repetidas leituras ou atribuições à coleções (Request.Form("parametro"), Request.QueryString("parametro"), Session("variavel"), Application("variavel") ou RecordSet("campo")) atribua o valor a uma variável e sempre que necessário utilize a variável.

 

Tratamento de Erro

 

O tratamento de erro em ASP é um grande problema, mas existe uma ótima solução para resolver a deficiência do ASP.

O On Error Resume Next é o único tratamento possível, porém se for usado de forma errada ele torna-se péssimo.

 

Veja o exemplo abaixo do uso do On Error Resume Next:

'<% 
'On Error Resume Next


'Call SuaFuncao()

'If Err.Number <> 0 Then

'Call LogarErros() 
'End If


'On Error Goto 0


'Sub SuaFuncao() 
... 
'End Sub


'Sub LogarErro() 
'Response.Write "Ocorreu um erro inesperado (" & Err.number & " - " & err.Description & ")"
'Response.End
''SEU CÓDIGO PARA LOGAR EM BANCO DE DADOS, EVENT VIEWER, EMAIL, ETC... 
'End Sub 
'%>

Option Explicit

 

Alternação entre códigos ASP e HTML '<% %>'

Uso de funções / Variáveis de módulo

Sessions

Leitura/Atribuição de Coleções (Request, Session, Application, Recordset, etc..)

Conversões Explicitas (Tipos de variáveis)

Includes

Request

Cursores de Recordset

Tratamento de Erro

 

Option Explicit

Utilize sempre a opção Option Explicit em suas páginas ASP.

Utilizando Option Explicit, além de melhorar a performance das páginas você detectará erros de digitação imediatamente, evitando horas de depuração de código para descobrir que o problema era uma variável com alguma letra trocada.

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.