Ankündigung

Einklappen
Keine Ankündigung bisher.

Foreign Keys finden

Einklappen

Neue Werbung 2019

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

  • geradok
    hat ein Thema erstellt Foreign Keys finden.

    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.

  • geradok
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X