1
запрос является:Update с внутренним соединением к той же таблице оптимизаций
CREATE TABLE logfile (
sequence_number BIGINT,
start_time DECIMAL,
finish_time DECIMAL,
irp_major VARCHAR(100),
offset BIGINT,
length BIGINT,
filename VARCHAR(2000),
is_seq BIT
);
//bulk insert 120 000 rows
CREATE CLUSTERED INDEX IX_logfile ON logfile(sequence_number);
UPDATE dbo.logfile SET is_seq = (
SELECT CASE WHEN a.offset = (b.offset + b.length) THEN 1 ELSE 0 END AS seq
FROM dbo.logfile a
LEFT JOIN dbo.logfile b
ON a.sequence_number = b.sequence_number + 1
WHERE a.sequence_number = logfile.sequence_number)
Есть в любом случае я могу улучшить производительность запроса обновления?
@Quassnoi. Разный результат или нет, я (снова) узнал что-то новое. Спасибо. –
ahh нашел ошибку: sequence_number - 1 должен быть sequence_number + 1. Отлично работает сейчас, скорость более или менее эквивалентна @lievens, на порядок лучше, чем у меня :) – devzero
Конечно, пропустил. – Quassnoi