我更改了一个用于包含 Lob 列 (VarBinary(MAX)) 的表。
当我跑
select * from sys.dm_db_partition_stats
where [object_id] = object_id('MyTable')
lob_used_page_count 是 1014969。我以为它会是 0。我错了还是我需要做些什么?
我更改了一个用于包含 Lob 列 (VarBinary(MAX)) 的表。
当我跑
select * from sys.dm_db_partition_stats
where [object_id] = object_id('MyTable')
lob_used_page_count 是 1014969。我以为它会是 0。我错了还是我需要做些什么?
试试ALTER TABLE MyTable REBUILD
。
似乎从下面的测试中得到了诀窍。
CREATE TABLE LobTest
(
PK INT IDENTITY PRIMARY KEY CLUSTERED,
A CHAR(7000),
B VARCHAR(MAX)
)
INSERT INTO LobTest
SELECT 'A', REPLICATE(CAST('A' AS VARCHAR(MAX)), 10000) UNION ALL
SELECT 'A', REPLICATE(CAST('A' AS VARCHAR(MAX)), 10000) UNION ALL
SELECT 'A', REPLICATE(CAST('A' AS VARCHAR(MAX)), 10000)
ALTER TABLE LobTest
DROP COLUMN B
SELECT *
FROM sys.dm_db_partition_stats
WHERE [object_id] = object_id('LobTest')
ALTER TABLE LobTest REBUILD
SELECT *
FROM sys.dm_db_partition_stats
WHERE [object_id] = object_id('LobTest')
DROP TABLE LobTest
重建聚集索引。当您在 SQL Server 中删除一列时,它实际上并没有被物理删除,直到重新生成聚集索引。