の情報私はFirebirdのに新しいですし、私はそれにいじりいますテーブル構造に関するいくつかの情報を取得するためにメタデータだとなど表のカーディナリティFirebirdの
私の問題は、私はいくつかの情報を見つけるように見えることができないということです推定されるテーブルの基数についてFirebirdからこの情報を入手する方法はありますか?
編集:カーディナリティことで
iは、テーブルの行数を意味:)と私の使用のためにselect count(*)
はオプションではありません。
の情報私はFirebirdのに新しいですし、私はそれにいじりいますテーブル構造に関するいくつかの情報を取得するためにメタデータだとなど表のカーディナリティFirebirdの
私の問題は、私はいくつかの情報を見つけるように見えることができないということです推定されるテーブルの基数についてFirebirdからこの情報を入手する方法はありますか?
編集:カーディナリティことで
iは、テーブルの行数を意味:)と私の使用のためにselect count(*)
はオプションではありません。
なぜクエリは使用しない:
select count(distinct field_name)/(count(field_name) + 0.0000) from table_name
指定された列の1高いカーディナリティに近い結果を。
あなたはこのような主キーの選択を使用して、aproximative方法を使用することができ、他のSQL DBのようにCOUNT()
関数を使用するテーブルの行数を取得するには:
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)
ビットを表現を混合するための@Sorry - カーディナリティによって、私は、テーブル内の行数を意味:) – aweis
- >とSELECT COUNT(*)は私の目的のために減速すると考えられている:) – aweis
はあなたの何@aweis目的? – Harriv