6 votes

SQL Server - Que se passe-t-il lorsqu'une ligne d'une table est mise à jour ?

Je crois me souvenir que lorsqu'une ligne d'une table est mise à jour, SQL Server supprime d'abord la ligne, puis la rajoute, avec la même valeur d'identité pour une colonne, si une telle colonne existe. Quelqu'un peut-il le confirmer ?

11voto

RichardTheKiwi Points 58121

Faux. Dans la plupart des cas, les données sont modifiées sur place, dans la même page. Avec SQL Server 2008, vous pouvez en fait interroger l'endroit où les données résident sur le disque, ce qui vous le révélera.

Après l'avoir regardé maintenant, je retire tout ce que j'ai dit :

http://www.sqlskills.com/BLOGS/PAUL/category/On-Disk-Structures.aspx

Ceci peut être facilement testé sur SQL Server 2008. (code modifié à partir de l'article lié)

CREATE TABLE test (c1 INT, c2 VARCHAR (2000));
GO
CREATE CLUSTERED INDEX test_cl ON test (c1);
GO
CHECKPOINT;
GO
INSERT INTO test VALUES (1, REPLICATE ('Paul', 500));
GO
CHECKPOINT;
select %%physloc%%, * from test    -- 0x3E01000001000000
GO
UPDATE test SET c1 = 2 WHERE c1 =1;
GO
select %%physloc%%, * from test    -- 0x3E01000001000100
                                                     ^
                                                     |
                                    notice it has changed location

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X