Consulta en 2 tablas

13/11/2003 - 21:49 por Jorge A S | Informe spam
Buenas a todos, les comento mi inconveniente:
Necesito hacer una consulta sobre 2 tablas, las dos
tienen un indice en la columna de busqueda.
Si lo hago sobre cualquiera de las dos tablas por
separado anda rapidisimo, el problema surge cuando hago la
unión de las dos consultas en una, parecería como si no
tendrían indice y se vuelve muy lenta.
Como opción, para solucionarlo me sugirieron usar
cursores pero el problema es que no deja anexar resultados
de otra consulta, es verdad esto ?
Y como 2° opción trate de usar una tabla temporal de
usuario y en el mismo Stored Procedure hacía una consulta
de creación de tabla y luego una de datos anexados todo
esto iba a la tabla temporal para luego hacer un select.
El tema es que funcionó bien desde el visor de consultas
pero no funciona desde la pagina ASP donde lo necesito
correr. Por lo tanto, alguién tiene idea de como hacer
esto posible ? Espero no haberlos confundido con tanto y
les agradezco por su atención.

Preguntas similare

Leer las respuestas

#11 dbuendiab
14/11/2003 - 22:55 | Informe spam
"Jorge A S" wrote in message news:<374501c3aa2c$21c4bb90$...
Este es el Stored procedure que estoy ejecutando sobre SQL
Server 7, en una m quina con Windows 2000, con 30 Gb
libres de disco y 256 Mb de memoria.


CREATE PROCEDURE Prueba
@parametro1 float =0
as
SELECT campo1, Campo2, campo3
INTO #temporal
FROM tabla1
WHERE cliente = @parametro1
INSERT
INTO [#temporal] (campo1, campo2, campo3)
SELECT campo1, campo2, campo3
FROM tabla2
WHERE campo1 = @parametro1

Select *
FROM #temporal
end



DOS COSAS:

1.- No necesitas la tabla temporal, un select mediante UNION hace el
mismo trabajo:

CREATE PROCEDURE Prueba
@parametro1 float = 0
AS

SET NOCOUNT ON

SELECT campo1, Campo2, campo3
FROM tabla1
WHERE cliente = @parametro1

UNION ALL

SELECT campo1, campo2, campo3
FROM tabla2
WHERE campo1 = @parametro1

2.- El problema en ASP como ya te comenta alguien es que los mensajes
que aparecen al ejecutar en el QA confunden al recordset de ADO, la
solución es impedir que salgan mediante Set NoCount On.

Saludos,

Diego Buendia
Barcelona, Spain
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida