Saludos Cordiales,
Tengo la consulta de actualización:
"update t_pedidos_imprenta_detalles set estatus = 1 where numerotalon in(
select idticket from t_recepcionticket where idplanillarecibo = '101870')"
Suponiendo que la sub-consulta: "select idticket from t_recepcionticket
where idplanillarecibo = '101870'"
Se ejcuta en 1 segundo y devuelve:
19416605, 19416604, 19045154, 19045155, 18949543, 19045153, 18949541,
18949542,
18821950, 18821951, 18821949, 18821948, 18821954, 18821947, 18821966,
18821940,
18821937, 18821953, 18821939, 20043667, 18821952, 20043666, 20043668,
18821938,
18821946, 18821941, 19907735
No deberìa la anterior consulta de actualizaciòn ser tan ràpida como:
"update t_pedidos_imprenta_detalles set estatus = estatus where numerotalon
in(
19416605, 19416604, 19045154, 19045155, 18949543, 19045153, 18949541,
18949542,
18821950, 18821951, 18821949, 18821948, 18821954, 18821947, 18821966,
18821940,
18821937, 18821953, 18821939, 20043667, 18821952, 20043666, 20043668,
18821938,
18821946, 18821941, 19907735)"
Que tambièn tarda 1 segundo.
Es decir lo que devuelve la subconsulta tarda un segundo y si le paso los
valores tarda un segundo, es decir nada, pero si ejecuto la consulta de
actualizaciòn con la sub-consulta puede tardar minutos. Los campos
numerotalon y idplanillarecibo son campos claves-ìndices, asi que no entiendo
por què la abismal diferencia.
Otra consulta:
Dada la consulta de actualizaciòn:
insert into unogestionprod.dbo.t_recepcionticket (idticket, idplanillarecibo)
select idticket, 1111 from unogestionprod.dbo.t_temprecepcionticket
where idplanillarecibo = 10
Si estoy ingresando en una tabla un select de otra idèntica, no deberìa ser
màs ràpido que crear el select, guardarlo en un cursor y hacer las
inserciones una a una?
Saludos y gracias de antemano.
Leer las respuestas