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


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

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

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

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

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

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

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




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





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

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

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














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


















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

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

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

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

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

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

















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




Ярлыки: , ,