2013-09-20 5 views
0

Есть ли лучший способ вместо SELECT COUNT(*) оператора для подсчета количества записей в таблице?Подсчет количества строк в sql-сервере 2008

Иногда нам приходится подсчитывать миллиарды записей из временных таблиц, которые импортируются с использованием запроса bcp.

+1

посмотрите на это http://stackoverflow.com/questions/6069237/fastest-way-to-count-exact-number-of-rows-in-a-very-large-table – Rohan

+0

Спасибо @RS, Я заглянул в нее, я проверю производительность. – Parshii

ответ

0

Если вам не нужно фильтровать, следующий запрос работает хорошо:

SELECT sum(rows) FROM SYS.PARTITIONS WHERE object_id=object_id('MY_TABLE') and index_id in(0,1) 

Это checkes количество строк SQL сервер хранения для этого объекта. Он не может возвращать какие-либо данные со счетчиком, и нет возможности включить группу туда или туда.

+0

Спасибо Vulcronos, это действительно быстрая строка кода. Раньше я использовал SELECT строки FROM sysindexes WHERE id = OBJECT_ID ('table_name') AND indid <2. – Parshii

1

Использование count(*) или count(some_column) - это самый быстрый способ проверить количество записей в таблице.

+0

Я всегда делал счет (primaryKey), потому что думал, что «*» добавит некоторые накладные расходы. Но я не уверен. –

+5

'count (*)' и 'count (some_column)' не эквивалентны, если столбец имеет значение NULL. –

+0

Оператор SELECT COUNT (*) делает полное сканирование таблицы, чтобы возвращать подсчет строк общей таблицы, что может занять очень много времени для больших таблиц, поэтому полезно считать первичный ключ, но здесь я делаю записи, затрагивающие миллиард счетчиков. @ L_7337 – Parshii

Смежные вопросы