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

#1 Accotto Maximiliano D.
13/11/2003 - 22:02 | Informe spam
Mira yo no coincido con el uso de cursores (para mi son muy lentos) ahora
porque no nos pasas mas informacion ej:

nombre de los campos q estas vinculando
Cantidad de registros de las tablas
Versionn de SQL y Service Pack
Tipo de Servidor (mas o menos memoria y micro)
y si es posible la consulta de join q estas haciendo!!

Un saludo

Accotto Maximiliano Damian
Fundicion San Cayetano S.A
4002 - 4010
Gerente de Sistemas

"Jorge A S" escribió en el mensaje
news:027801c3aa27$a999a0d0$
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.
Respuesta Responder a este mensaje
#2 Jorge A S
13/11/2003 - 22:21 | Informe spam
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

Muchas gracias !


Mira yo no coincido con el uso de cursores (para mi son


muy lentos) ahora
porque no nos pasas mas informacion ej:

nombre de los campos q estas vinculando
Cantidad de registros de las tablas
Versionn de SQL y Service Pack
Tipo de Servidor (mas o menos memoria y micro)
y si es posible la consulta de join q estas haciendo!!

Un saludo

Accotto Maximiliano Damian
Fundicion San Cayetano S.A
4002 - 4010
Gerente de Sistemas

"Jorge A S"


escribió en el mensaje
news:027801c3aa27$a999a0d0$
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.


.

Respuesta Responder a este mensaje
#3 Accotto Maximiliano D.
13/11/2003 - 22:26 | Informe spam
pero vos me decias q originalmente la tenias vinculada y q luego lo
cambiaste por cursores!! como estaba esa instruccion? no veo (yo por lo
menos) necesario el uso de una temporal para unir tablas.

Decime ademas la cantidad de registros q estamos hablando gracias

Accotto Maximiliano Damian
Fundicion San Cayetano S.A
4002 - 4010
Gerente de Sistemas

"Jorge A S" escribió en el mensaje
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

Muchas gracias !


Mira yo no coincido con el uso de cursores (para mi son


muy lentos) ahora
porque no nos pasas mas informacion ej:

nombre de los campos q estas vinculando
Cantidad de registros de las tablas
Versionn de SQL y Service Pack
Tipo de Servidor (mas o menos memoria y micro)
y si es posible la consulta de join q estas haciendo!!

Un saludo

Accotto Maximiliano Damian
Fundicion San Cayetano S.A
4002 - 4010
Gerente de Sistemas

"Jorge A S"


escribió en el mensaje
news:027801c3aa27$a999a0d0$
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.


.

Respuesta Responder a este mensaje
#4 Javier Loria
13/11/2003 - 23:05 | Informe spam
Hola Jorge:
Podria asumir que la consulta tiene miles de filas y que originalmente
usaste un UNION para unir las tablas?
Si es asi prueba cambiando el UNION por un UNION ALL, algo como:

SELECT Campo1, Campo2, Campo3
FROM Tabla1
UNION ALL
SELECT Campo1, Campo2, Campo3
FROM Tabla2

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Jorge A S escribio:
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

Muchas gracias !


Mira yo no coincido con el uso de cursores (para mi son muy lentos)
ahora porque no nos pasas mas informacion ej:

nombre de los campos q estas vinculando
Cantidad de registros de las tablas
Versionn de SQL y Service Pack
Tipo de Servidor (mas o menos memoria y micro)
y si es posible la consulta de join q estas haciendo!!

Un saludo

Accotto Maximiliano Damian
Fundicion San Cayetano S.A
4002 - 4010
Gerente de Sistemas

"Jorge A S" escribió en el
mensaje news:027801c3aa27$a999a0d0$
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.


.
Respuesta Responder a este mensaje
#5 manuel
14/11/2003 - 05:37 | Informe spam
Jorge
en principio el SP no te arroja error en el asp pero te
devuelve un Recordset vacío porque te faltaría SET NOCOUNT
ON para que la devolución fuera el conjunto de filas del
último select * FROM #temporal

CREATE PROCEDURE Prueba
AS
SET NOCOUNT ON
SELECT INTO.
INSERT INTO .
SELECT * FROM
GO

Suerte
Manuel

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

Muchas gracias !

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.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida