Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Count(*) non conditionné vs tables système

La valeur stockée dans les métadonnées n'est pas garantie d'être correcte. DBCC UPDATEUSAGE peut être utilisé pour corriger cela quand cela se produit (moins probable depuis SQL Server 2000)

De plus, il n'est pas cohérent sur le plan transactionnel. Vous pouvez lire une valeur de comptage mise à jour par une transaction non validée.

Et il est possible que ces valeurs soient également mises à jour manuellement.

CREATE TABLE dbo.YourTable(X INT)

UPDATE STATISTICS dbo.YourTable WITH ROWCOUNT = 1000000

SELECT     sum(p.rows) eRowCount
FROM       sys.partitions p
WHERE      P.object_id =object_id('dbo.YourTable') AND p.index_id < 2