Firebird中的表基数信息

时间:2011-12-23 15:52:35

标签: metadata firebird

我是Firebird的新手,我正在弄乱它的元数据以获取有关表结构等的一些信息。

我的问题是我似乎无法找到有关估计表基数的一些信息。有没有办法从Firebird获取此信息?

修改

基数我的意思是表格中的行数:)对于我的使用,select count(*)不是一个选项。

3 个答案:

答案 0 :(得分:2)

您可以使用aproximative方法,使用主键的选择性,如下所示:

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 :(得分:1)

要获取表中的行数,请使用COUNT()函数,就像在任何其他SQL DB中一样,即

SELECT count(*) FROM table;

答案 2 :(得分:0)

为什么不使用查询:

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

结果越接近1,指定列的基数越高。

相关问题