Ankündigung

Einklappen
Keine Ankündigung bisher.

Foreign Keys finden

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Foreign Keys finden

    Ich möchte gern herausfinden, ob eine Tabelle Foreign Keys enthält, und verwende dazu diese schöne Abfrage (in einem anderen Forum gefunden, drei Jahre alt, trotzdem dankeschön)
    Code:
    SELECT `COLUMN_NAME`, `REFERENCED_TABLE_NAME`, `REFERENCED_COLUMN_NAME` 
    FROM `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE` WHERE `TABLE_NAME` = 'irgendeintabellenname'
    Die Abfrage funktioniert wunderschön und liefert exakt die gewünschten Ergebnisse, aber ...
    sie dauert bis zu 38 Sekunden!!! [STRATO, PHP 4.4.9, MySQL 5.0.88.]
    (die DB enthält so ca. 20 Tabellen mit insgesamt vielleicht 50 Spalten)
    Allerdings dauert sie besonders lange, wenn die Tabelle 'irgendeintabellenname' KEINE foreign keys enthält.
    Meine Fragen: Ist es normal, dass das INFORMATION_SCHEMA so langsam abgefragt wird? Gibt es andere Lösungen? Danke im voraus für eure Hilfe.


  • #2
    Lösung selbst gefunden

    Ich glaube ich habe es schon:
    INFORMATION_SCHEMA enthält Informationen über ALLE DBs die STRATO auf seinem Server hat - wer weiß, wie viele das sind. Daher wohl die lange Abfragedauer. Durch Hinzufügen des AND in der WHERE-Bedingung
    Code:
    ... WHERE `TABLE_NAME` = 'tabellenname' AND `TABLE_SCHEMA` = 'MeineDatenbank'
    verkürzt sich die Abfragedauer radikal. Ich hatte gedacht a) das ist ja nicht nötig, ist ja klar, dass es MeineDatenbank ist (haha), b) je mehr Bedingungen, umso länger dauert es - falsch gedacht.

    Wieder ein schönes Beispiel für den Grundsatz: "Erkläre dein Problem genau, und die Lösung liegt auf der Hand."

    Danke für die Geduld, virtuelle Leser.

    Kommentar

    Lädt...
    X