Я нашел эту хорошую статью SQL Server - HOW-TO: быстро получить точное количество строк для таблицы из martijnh1
, что дает хороший обзор для каждого сценария.
Мне это нужночтобы быть расширенным, где мне нужно предоставить счет на основе конкретного условия, и когда я придумаю эту часть, я обновлю этот ответ дальше.
А пока вот подробности из статьи:
Метод 1:
Запрос:
SELECT COUNT(*) FROM Transactions
Комментарии:
Выполняетсяполное сканирование таблицы.Медленно на больших столах.
Метод 2:
Запрос:
SELECT CONVERT(bigint, rows)
FROM sysindexes
WHERE id = OBJECT_ID('Transactions')
AND indid < 2
Комментарии:
Быстрый способ получить количество строк.Зависит от статистики и неточно.
Запустите DBCC UPDATEUSAGE (База данных) с COUNT_ROWS, что может занять значительное время для больших таблиц.
Метод 3:
Запрос:
SELECT CAST(p.rows AS float)
FROM sys.tables AS tbl
INNER JOIN sys.indexes AS idx ON idx.object_id = tbl.object_id and
idx.index_id < 2
INNER JOIN sys.partitions AS p ON p.object_id=CAST(tbl.object_id AS int)
AND p.index_id=idx.index_id
WHERE ((tbl.name=N'Transactions'
AND SCHEMA_NAME(tbl.schema_id)='dbo'))
Комментарии:
Способ, которым студия управления SQL подсчитывает строки (посмотрите на свойства таблицы, хранилище, количество строк).Очень быстро, но все же приблизительное количество строк.
Метод 4:
Запрос:
SELECT SUM (row_count)
FROM sys.dm_db_partition_stats
WHERE object_id=OBJECT_ID('Transactions')
AND (index_id=0 or index_id=1);
Комментарии:
Быстрая (хотя и не такая быстрая, как метод 2) операция и, что не менее важно, надежная.