Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#1

Vorhandensein eines Feldes prüfen

  Alt 31. Aug 2006, 15:01
Datenbank: FB • Version: 1.5 • Zugriff über: bde
Hallo #,

meine DB wird ständig erweitert, es kommen neue Felder dazu.
Da ich kein Freund von "select *" bin,
prüfe ich immer vorher, welche Felder vorhanden sind,
und baue dann die Query danach auf.
Mmeistens werden nicht alle Felder benutzt.

Nein ! Das Prüfen erfolgt nur einmal beim Programmstart

Nun die Frage:
Zum Prüfen benutze ich bisher ein
select * from tab where id=0 Dann wird mit Fields in einer Schleige gekuckt, ob das betreffende Feld drin steht.

Bei grossen Tabellen dauert es natürlich etwas (wobei das "dauert" relativ ist).
Es wird ja ein leeres Recordset zurückgegeben.

Die Execute bei einer mitteren Tabelle sind 30ms, die fetch 5ms (ibplanalyzer).


Eine andere Möglichkit wäre der direkte Zugriff auf die Metadaten, also:
SQL-Code:
select rdb$relation_fields.rdb$field_name
       from
          rdb$relation_fields
       where
         (rdb$relation_fields.rdb$relation_name='PERSONAL')
       and
         (
         (rdb$relation_fields.rdb$field_name='NAME')
         or
         (rdb$relation_fields.rdb$field_name='FIRSTNAME')
         )
Jetzt sind die Zeiten gnau anders rum (Execute 5ms, Fetch 30ms wegen dem Recordset).

Hat hier jemand praktische Erfahrungen mit "FieldExistsInTable" und Firebird ?


DBServer-Unabhängigkeit spielt hier erst mal keine Rolle.


Danke im voraus

Heiko
Heiko
  Mit Zitat antworten Zitat