SQL - Como es???

 
Vista:

Como es???

Publicado por Daniel_26... (73 intervenciones) el 03/10/2002 06:08:42
Hola niños...

Tengo una duda sobre algo tan sencillo,espero me la aclaren pero no la hagan mas grande...

Resulta que estoy realizando una consulta anidada... por ejemplo, tengo algo asi

Select T.C1,(Selec C2 from Tabla2 where C1 = T.C1) as X
from tabla T
where Condicion

Ok...ese es solo una partecita de algunas subconsultas grandes que tengo... bueno ni tanto... ok... el punto es que segun tengo entendido el selec anidado se ejecuta a medida que se van encontrando los registros que cumplan con la condicion que le puse... Si que no???

bueno... otra.... en esa misma consulta, como los select que tengo anidados son muy recurrentes, lo estoy poniendo en un procedimiento almacenado y desde ahi lo quiero llamar...jaja no lo he hecho pero orita se me ocurre llamarlo donde tengo el select anidado,osea, reemplazaria ese select y llamaria al procedimiento que solo meregresaria un valor, y ese valor ponerlo como un AS XXX, ya mañana vere que onda haber si se puede, yo digo que si...y ustedes??? o bien si hay alguna otra forma de llamar a ese procedimiento y suprimir esa subconsulta para que no sea tan descomunal, ya que hasta ahorita llevo solamente como 90 lineas en mi select y por lo que veo, crecera otro tanto, y es lo que no quiero, todas esas lineas a lo queveo estan porque se requieren... lo bueno estaria ya que haya muchos registros...

Bueno, espero algun comentario... si no se entendio ni mayes, me lo dicen...

Saludos y que la sigan pasando muy bien...

aaaaaaaaaaaaaaa... jeje estoy usando sql server 2000

Daniel_26...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como es???

Publicado por Milson Cardona (3 intervenciones) el 04/10/2002 17:28:25
Bueno, según como yo lo veo, esta consulta se te demorará eternidades si la T1 y la T2 contienen muchos registros.......

1 - y tienes razón, la instrucción o SELECT anidado, se ejecutará por cada registro que recupere la consulta a la tabla T1

2- desde un SELECT SI se puede llamar al Store Procedure, es posible que se te disminuya el tiempo total de la consulta, aunque no estoy tan seguro porque de todas maneras aunque el motor es más rápido, debe ejecutar más instrucciones, lo debes probar y tratar de obtimizar al máximo el codigo del SP...... la instrucción para llamar al SP sería
SELECT t.c1,
nombre_SP(t.c1) AS nombre
FROM tabla
WHERE condiciones;

3- se me ocurre que si pones el SELECT anidado en el FROM en vez de en el SELECT, tal vez podrá ser más rápido, claro esta lo digo sin conocer toda la sentencia que tienes, y si sería posible que lo hicieras como te lo digo Ej

SELECT T.c1,T2.c2
FROM tabla T,
(SELECT c2 FROM Tabla2) as T2
WHERE Condicion AND T2.c1 = T.c1;

espero que esto te ayude a resolver el problema, me cuentas la evolución del mismo

un saludo especial desde COLOMBIA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como es???

Publicado por Daniel_26 (73 intervenciones) el 04/10/2002 19:28:50
Hola...
Gracias, por tus comentarios... ja, realmente pense que nadie lo iba a responder.... tomare enc uenta lo que me dices sobre tus observaciones, como no me habian dado otra opinion al respecto, ahorita llegando lo voy a probar, eso de la lamada con el SP ojala y lo pueda hacer, ayer lo intente un rato y me marcaba error, probare con esto...

cuando llegue al trabajo te mando el proceso que tengo, para ver si tienes alguna sujerencia, y tienes razon ald ecir que es lo que puedes ver, puesto que no he comentado muy bien como es el problema...

Saludos desde Hermosillo, sonora, México...

Daniel_26
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar