Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

uncodierte Count(*) vs. Systemtabellen

Es kann nicht garantiert werden, dass der in den Metadaten gespeicherte Wert korrekt ist. DBCC UPDATEUSAGE kann verwendet werden, um dies zu korrigieren, wenn es passiert (weniger wahrscheinlich seit SQL Server 2000)

Es ist auch nicht transaktionskonsistent. Sie können einen Zählwert lesen, der durch eine nicht festgeschriebene Transaktion aktualisiert wurde.

Und es ist möglich, dass diese Werte auch manuell aktualisiert werden.

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