Таблица кардинальности информации в Firebird - PullRequest
1 голос
/ 23 декабря 2011

Я новичок в Firebird, и я возился с его метаданными, чтобы получить некоторую информацию о структуре таблицы и т. Д.

Моя проблема в том, что я не могу найти некоторую информацию об оценочной таблицекардинальное.Есть ли способ получить эту информацию из Firebird?

Редактировать:

Под количеством элементов я подразумеваю количество строк в таблице :) и для моего использования select count(*) не вариант.

Ответы [ 3 ]

2 голосов
/ 24 декабря 2011

Вы можете использовать приблизительный метод, используя селективность первичного ключа, например:

SELECT
    R.RDB$RELATION_NAME TABLENAME,
    (
    CASE
      WHEN I.RDB$STATISTICS = 0 THEN 0
      ELSE 1 / I.RDB$STATISTICS
    END) AS COUNTRECORDS8
FROM RDB$RELATIONS R
  JOIN RDB$RELATION_CONSTRAINTS C ON (R.RDB$RELATION_NAME = C.RDB$RELATION_NAME AND C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY')
  JOIN RDB$INDICES I ON (I.RDB$RELATION_NAME = C.RDB$RELATION_NAME AND I.RDB$INDEX_NAME = C.RDB$INDEX_NAME)
1 голос
/ 23 декабря 2011

Чтобы получить количество строк в таблице, вы используете функцию COUNT(), как и в любой другой БД SQL, т.е.

SELECT count(*) FROM table;
0 голосов
/ 23 декабря 2011

Почему бы не использовать запрос:

select count(distinct field_name)/(count(field_name) + 0.0000) from table_name

Чем ближе результат к 1, тем выше мощность указанного столбца.

...