Mam następujące polecenie select, które kończy się niemal natychmiast.Dlaczego UPDATE trwa znacznie dłużej niż SELECT?
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
jednak równoznaczne oświadczenie aktualizacja odbywa 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
Nawet jeśli dodam:
and InvoicesCharges.orderaccnumber <> Accountnumbersorders.accountnumber
na końcu instrukcji UPDATE zmniejszenie liczby zapisów do zera, to zajmuje tyle samo czasu.
Czy robię coś nie tak? Dlaczego istnieje tak ogromna różnica?
Dodatkowa klauzula OWY nadal jest dobrym pomysłem, dlaczego aktualizować 50 000 wierszy, gdy trzeba tylko zaktualizować 2? – HLGEM