"sys.dm_db_partition_stats" et "SET STATISTICS IO"
Hello,
J'ai besoin encore de votre lumière.
Pour obtenir le nombre total de pages occupées par la table T_TEST, j'ai fais :
Code:
1 2 3
| SET STATISTICS IO ON
SELECT * FROM T_TEST
SET STATISTICS IO OFF |
Et obtenir le résultat suivant :
Citation:
--(1000000 row(s) affected)
--Table 'T_TEST'. Nombre d'analyses 1, lectures logiques 219698, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Par contre en utilisant la DMV "sys.dm_db_partition_stats", je trouve une valeur différente :
Code:
1 2 3 4 5 6 7
| SELECT partition_id,
SUM(used_page_count) AS total_number_of_used_pages,
SUM (reserved_page_count) AS total_number_of_reserved_pages,
SUM (row_count) AS total_number_of_rows
FROM sys.dm_db_partition_stats
WHERE object_id=OBJECT_ID(N'MaBase.dbo.T_TEST') AND (index_id=0 or index_id=1)
GROUP BY partition_id |
Citation:
partition_id-------------------- total_number_of_used_pages --------------------total_number_of_reserved_pages -------------------- total_number_of_rows
72057594042187776-------------------- 5416 ---------------------------------------- 5417 -------------------------------------------1000000
d'où provient cette différente ? Merci de m'éclairer.
-- Voici la table T_TEST
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| --Création de la table
SET NOCOUNT ON
IF OBJECT_ID('dbo.T_TEST') IS NOT NULL
DROP TABLE dbo.T_TEST
CREATE TABLE dbo.T_TEST
(
id int identity(1,1),
val varchar(10),
creation_date datetime
)
--Chargement d'1 million de lignes dans la table
DECLARE @counter int;
SET @counter = 1;
WHILE @counter <= 1000000
BEGIN
INSERT INTO T_TEST(val,creation_date) VALUES(convert(varchar(10),(LEFT(convert(bigint,RAND()*10000000),6))),getdate());
SET @counter = @counter + 1
END; |