1
La requête est:Mise à jour avec jointure interne à même optimisations de table
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)
Y at-il de toute façon je peux améliorer les performances de la requête de mise à jour?
@Quassnoi. Résultat différent ou non, j'ai (encore) appris quelque chose de nouveau. THX. –
ahh trouvé l'erreur: sequence_number - 1 devrait être sequence_number + 1. Fonctionne bien maintenant, la vitesse est plus ou moins équivalente à @lievens, les deux sont de meilleure qualité que le mien :) – devzero
Bien sûr, l'a manqué. – Quassnoi