Tengo la siguiente instrucción de selección que termina casi al instante.¿Por qué una ACTUALIZACIÓN toma mucho más tiempo que una SELECCIÓN?
declare @weekending varchar(6)
set @weekending = 100103
select InvoicesCharges.orderaccnumber, Accountnumbersorders.accountnumber
from Accountnumbersorders, storeinformation, routeselecttable,InvoicesCharges, invoice
where InvoicesCharges.pubid = Accountnumbersorders.publication
and Accountnumbersorders.actype = 0
and Accountnumbersorders.valuezone = 'none'
and storeinformation.storeroutename = routeselecttable.istoreroutenumber
and storeinformation.storenumber = invoice.store_number
and InvoicesCharges.invoice_number = invoice.invoice_number
and convert(varchar(6),Invoice.bill_to,12) = @weekending
Sin embargo, la instrucción de actualización equivalente toma 1m40s
declare @weekending varchar(6)
set @weekending = 100103
update InvoicesCharges
set InvoicesCharges.orderaccnumber = Accountnumbersorders.accountnumber
from Accountnumbersorders, storeinformation, routeselecttable,InvoicesCharges, invoice
where InvoicesCharges.pubid = Accountnumbersorders.publication
and Accountnumbersorders.actype = 0
and dbo.Accountnumbersorders.valuezone = 'none'
and storeinformation.storeroutename = routeselecttable.istoreroutenumber
and storeinformation.storenumber = invoice.store_number
and InvoicesCharges.invoice_number = invoice.invoice_number
and convert(varchar(6),Invoice.bill_to,12) = @weekending
Incluso si añado:
and InvoicesCharges.orderaccnumber <> Accountnumbersorders.accountnumber
al final de la instrucción de actualización reducir el número de escrituras a cero, toma la misma cantidad de tiempo.
¿Estoy haciendo algo mal aquí? ¿Por qué hay una gran diferencia?
La cláusula adicional AND sigue siendo una buena idea, ¿por qué actualizar 50,000 filas cuando solo necesita actualizar 2? – HLGEM