sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server - Hvad sker der, når en række i en tabel opdateres?

Falsk. Dataene ændres på plads på samme side under de fleste omstændigheder. Med SQL Server 2008 kan du faktisk undersøge, hvor dataene ligger på disken, hvilket vil afsløre så meget.

Efter faktisk at have set på det nu, tager jeg det hele tilbage:

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

Dette kan nemt testes på SQL Server 2008. (kode ændret fra linket artikel)

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



  1. Avanceret SQL:CROSS APPLY og OUTER APPLY

  2. Indstil tidszone i PHP og MySQL

  3. Sådan opretter du kun en tabel, hvis den ikke findes i SQLite

  4. pgFincore 1.2, en PostgreSQL-udvidelse