Aug 06 2008
Index Informationen für Firebird
Für ein Projekt benötigte ich detaillierte Informationen über Indices in einer Firebird-Datenbank.
Hier die Lösung:
SELECT
RDB$INDEX_SEGMENTS.RDB$FIELD_NAME AS field_name,
RDB$INDICES.RDB$DESCRIPTION AS description,
(RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION + 1) AS field_position
FROM
RDB$INDEX_SEGMENTS
LEFT JOIN
RDB$INDICES
ON
RDB$INDICES.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME
LEFT JOIN
RDB$RELATION_CONSTRAINTS
ON
RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME
WHERE
UPPER(RDB$INDICES.RDB$RELATION_NAME)=<TABLE_NAME>
AND
UPPER(RDB$INDICES.RDB$INDEX_NAME)=<INDEX_NAME>
AND
RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE IS NULL
ORDER BY
RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION
<TABLE_NAME> und <INDEX_NAME> mit den entsprechenden Werten ersetzen

