Foros del Web » Programando para Internet » ASP Clásico »

modificar consulta

Estas en el tema de modificar consulta en el foro de ASP Clásico en Foros del Web. Hola gente, mi problema es que he hecho una consulta que tarda mucho en mostrar los datos. Como mi nivel en ASP es bastante pobre, ...
  #1 (permalink)  
Antiguo 27/03/2008, 06:51
 
Fecha de Ingreso: febrero-2005
Mensajes: 28
Antigüedad: 19 años, 3 meses
Puntos: 0
modificar consulta

Hola gente, mi problema es que he hecho una consulta que tarda mucho en mostrar los datos. Como mi nivel en ASP es bastante pobre, estoy seguro que se puede hacer de otra manera. Y esa es mi pregunta. ¿Como mejoro este consulta?

Primero la explicación: tengo una tabla de distribuidores con los campos continente, pais, provincia, población y los datos propios de cada distribuidor.
Por supuesto hay más de un distribuidor para cada pais, provincia y población.
Tengo que crearme un xml para poder hacer consultas con un flash.

Este es el código:

Código:
SQL="SELECT DISTINCT(CONTINENTE) FROM tDistribuidores"
			Set rs=CreateObject("ADODB.Recordset")
			rs.CursorType=1
	  		rs.Open SQL, con
			do while not rs.EOF					
				response.Write("<continentes nom='"&rs("CONTINENTE")&"'>"&chr(13))
					SQL2="SELECT DISTINCT(PAIS) FROM tDistribuidores WHERE CONTINENTE='"&rs("CONTINENTE")&"'"
					Set rs2=CreateObject("ADODB.Recordset")
					rs2.CursorType=1
					rs2.Open SQL2, con
					do while not rs2.EOF					
						response.Write("<pais nom='"&rs2("PAIS")&"'>"&chr(13))
							SQL3="SELECT DISTINCT(PROVINCIA) FROM tDistribuidores WHERE PAIS='"&rs2("PAIS")&"'"
							Set rs3=CreateObject("ADODB.Recordset")
							rs3.CursorType=1
							rs3.Open SQL3, con
							do while not rs3.EOF					
								response.Write("<provincia nom='"&rs3("PROVINCIA")&"'>"&chr(13))
									SQL4="SELECT DISTINCT(POBLACION) FROM tDistribuidores WHERE PROVINCIA='"&rs3("PROVINCIA")&"'AND PAIS='"&rs2("PAIS")&"' "
									Set rs4=CreateObject("ADODB.Recordset")
									rs4.CursorType=1
									rs4.Open SQL4, con
									do while not rs4.EOF	
										dim kk			
										kk=Replace(rs4("POBLACION"), "'", "&apos;") 	
										dim pob
										pob=Replace(rs4("POBLACION"), "'", "''") 	
										response.Write("<poblacion nom='"&kk&"'>"&chr(13))
											'if rs4("POBLACION")<>"" then
								SQL5="SELECT * FROM tDistribuidores WHERE PROVINCIA='"&rs3("PROVINCIA")&"'AND PAIS='"&rs2("PAIS")&"'AND POBLACION='"&pob&"'"
												Set rs5=CreateObject("ADODB.Recordset")
												rs5.CursorType=1
												rs5.Open SQL5, con
												do while not rs5.EOF	
													response.Write("<distribuidor>"&chr(13))
														response.Write("<nombre>"&Server.HTMLEncode(rs5("NOMBRE"))&"</nombre>"&chr(13))
														response.Write("<direccion>"&rs5("DIRECCION")&"</direccion>"&chr(13))	
														response.Write("<cp>"&rs5("CP")&"</cp>"&chr(13))	
														response.Write("<telefono>"&rs5("TELEFONO")&"</telefono>"&chr(13))
														response.Write("<mail>"&rs5("EMAIL")&"</mail>"&chr(13))
														response.Write("<web>"&rs5("WEB")&"</web>"&chr(13))
													response.Write("</distribuidor>"&chr(13))
												rs5.MoveNext		
												loop 		
												rs5.Close
												set rs5=nothing
											'end if
										response.Write("</poblacion>"&chr(13))	
									rs4.MoveNext		
									loop 		
									rs4.Close
									set rs4=nothing
							
								response.Write("</provincia>"&chr(13))	
							rs3.MoveNext		
							loop 		
							rs3.Close
							set rs3=nothing
					
						response.Write("</pais>"&chr(13))	
					rs2.MoveNext		
					loop 		
					rs2.Close
					set rs2=nothing
			
				response.Write("</continentes>"&chr(13))	
			rs.MoveNext		
			loop 		
			rs.Close
			set rs=nothing
Se entiende? me podéis ayudar?
  #2 (permalink)  
Antiguo 27/03/2008, 07:09
Avatar de GaboMaKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Viña del Mar - Chile
Mensajes: 323
Antigüedad: 21 años, 7 meses
Puntos: 2
Re: modificar consulta

el problema no es ASP sino Sql, date una vuelta por el foro de sql o busca manuales en san google, para hacer consultas màs complejas, pero a la vez te simplifiacn la vida, terminos como inner join, etc... te pueden ayudar para optimizar la consulta que haces a la base, que en este caso es demasiadas, asi consultas por emplos solo los datos que te interesa saber como respuesta de la base, ya no haces los * from... busca y ve ese tipo de consultas..
__________________
Exito!!
:censura:
Visita Uganet.cl
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:28.