Самый быстрый способ подсчета точного количества строк в очень большой таблице? - PullRequest
217 голосов
/ 20 мая 2011

Я встречал статьи, в которых утверждается, что SELECT COUNT(*) FROM TABLE_NAME будет медленным, когда в таблице много строк и много столбцов.

У меня есть таблица, которая может содержать даже миллиарды строк [в ней приблизительно 15 столбцов]. Есть ли лучший способ получить число EXACT количества строк в таблице?

Пожалуйста, примите во внимание следующее перед ответом:

  • Ищу поставщика базы данных независимое решение. Это нормально, если это охватывает MySQL , Oracle , MS SQL Server . Но если действительно нет базы данных независимое от поставщика решение, то я соглашусь на разные решения для разных поставщиков баз данных.

  • Я не могу использовать любой другой внешний инструмент сделать это. Я в основном ищу Решение на основе SQL.

  • Я не могу нормализовать дизайн моей базы данных дальше Это уже в 3NF и более того много кода уже написано вокруг него.

Ответы [ 25 ]

0 голосов
/ 03 ноября 2011

выберите строки из sysindexes, где id = Object_ID ('TableName') и indid <2 </p>

0 голосов
/ 01 июля 2018

С PostgreSQL:

SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = 'table_name'
0 голосов
/ 26 мая 2011

Если вы используете Oracle, как насчет этого (при условии, что статистика таблицы обновлена):

select <TABLE_NAME>, num_rows, last_analyzed from user_tables

last_analyzed покажет время последнего сбора статистики.

0 голосов
/ 08 мая 2019

В SQL Server 2016 я могу просто проверить свойства таблицы и затем выбрать вкладку «Хранилище» - это дает мне количество строк, дисковое пространство, используемое таблицей, индексное пространство и т. Д.

0 голосов
/ 30 июня 2013

Поместите индекс в какой-то столбец.Это должно позволить оптимизатору выполнить полное сканирование блоков индекса, а не полное сканирование таблицы.Это сократит ваши затраты на ввод-вывод.Посмотрите на план выполнения до и после.Затем измерьте время настенных часов в обоих направлениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...