Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server - Какво се случва, когато се актуализира ред в таблица?

Невярно. Данните се променят на място, в рамките на една и съща страница при повечето обстоятелства. Със SQL Server 2008 всъщност можете да разпитвате къде се намират данните на диска, което ще разкрие толкова много.

След като го погледнах сега, връщам всичко обратно:

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

Това може лесно да се тества на SQL Server 2008. (кодът е променен от свързана статия)

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да вмъкнете прекъсване на ред в низ VARCHAR/NVARCHAR на SQL Server

  2. SQL заявка за получаване на обобщен резултат в разделители на запетая заедно с група по колона в SQL Server

  3. Получаване на максимална стойност от редове и присъединяване към друга таблица

  4. Обобщена таблица и конкатенирани колони

  5. Не може да се намери нито колона dbo, нито дефинираната от потребителя функция, нито агрегат dbo.Splitfn, или името е двусмислено