我是Firebird的新手,我正在弄乱它的元数据以获取有关表结构等的一些信息。
我的问题是我似乎无法找到有关估计表基数的一些信息。有没有办法从Firebird获取此信息?
修改
基数我的意思是表格中的行数:)对于我的使用,select count(*)
不是一个选项。
答案 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,指定列的基数越高。