Number of observations in Data Set. Количество строк в таблице.

 Всем добрый день.

Довольно часто возникает необходимость понять сколько записей в той или иной таблице.
В принципе, если таблица небольшая то можно просто написать select count(1) from table и в качестве результата увидим количество записей.

Но бывают случаи, когда размер таблицы достаточно большой (несколько десятков гигабайт). Тогда в таком случае вышеуказанная операция становиться затратна по времени выполнения.

Как же быть в таком случае?

В таком случае нам на помощь приходит функция  — ATTRN 

Приведем пример использования данной функции:

Возьмем табличку на несколько миллионов записей:

Многие используют опцию nobs:


И мы видим, что в макро переменную nobs записалось количество строк в таблице — 8 671 962.

А теперь давайте проведем следующий эксперимент:

Возьмем и удалим половину записей, а именно все что больше 4 миллионов:

И теперь опять посмотрим сколько у нас записей в таблице:

И что мы видим?! А видим мы, что кол-во записей не изменилось.

Почему же так?

А дело тут в том, что nobs показывает кол-во физических строк, в том числе и помеченных как удаленные.

От сюда вывод, что nobs лучше не пользоваться.

Тогда возникает вопрос, а чем же пользоваться для определения кол-ва записей ???

И на этот вопрос также есть ответ — NLOBS параметр — показывает кол-во логических записей:

Так что пользуйтесь!

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.