Es klingt wie Ihr Schema ist nicht so groß. 20 Tabellen von id/varchar klingen wie ein gebrochener EAV, der allgemein als gebrochen betrachtet wird. Trotzdem denke ich, dass eine UNION-Abfrage helfen wird. Dies wäre die "Ansicht" in der Datenbank zu erstellen, so dass Sie nur SELECT * FROM thisviewyoumade
und lassen Sie es sich sorgen für das Treffen aller Tabellen.
Eine UNION-Abfrage funktioniert, indem mehrere SELECT
Statataements "übereinander" gestapelt werden. Es ist wichtig, dass jede Anweisung SELECT
die gleiche Anzahl, die gleiche Ordinalzahl und die gleichen Typen von Feldern aufweist. Wenn sie also die Ergebnisse stapelt, stimmt alles überein.
In Ihrem Fall ist es sinnvoll, ein zusätzliches Feld zu erstellen, damit Sie wissen, aus welcher Tabelle es stammt. Etwas wie folgt aus:
SELECT 'table1' as tablename, id, col2 FROM table1
UNION ALL
SELECT 'table2', id, col2 FROM table2
UNION ALL
SELECT 'table3', id, col2 FROM table3
... and on and on
Die Namen oder Aliasnamen der Felder in der ersten SELECT
Aussage sind die Feldnamen, die in der Ergebnismenge verwendet werden, die zurückgegeben wird, also keine Sorgen über ein Bündel AS blahblahblah
in nachfolgenden SELECT
tun Aussagen.
Die eigentliche Frage ist, ob diese Union-Abfrage schneller als 15 einzelne Anrufe auf solch eine winzige winzige Menge von Daten ausführen wird. Ich denke, die bessere Option wäre, Ihr Schema zu ändern, so dass dieses Zeug bereits in einer Tabelle gespeichert ist, genau wie diese Ausgabe der UNION-Abfrage. Dann würden Sie eine einzelne SELECT-Anweisung für eine einzelne Tabelle benötigen. Und 400x20 = 8000 ist immer noch ein dinkeliger kleiner Tisch zum Abfragen.
400 Zeilen - wow -.. besser nennen NASA Aber wirklich brauchen Sie mehr infor hier liefern Vielleicht könnten Sie machen, was Macht diese 15 Anrufe immer eine asynchrone Art und Weise? – AntDC
Ich glaube, du verpasst das Bild. 400 Zeilen für den Tisch, es ist wie 1 Penny in der Tasche - nichts für MySQL, also 15 Anrufe von nichts sollten fast keine Zeit brauchen. Also, wie nennt man langsam? Hast du irgendwelche Beweise? Kannst du dein Real-Db-Schema angeben? Abfrage Proben? sqlfiddle wäre sehr hilfreich. Wie verfolgen Sie die Leistung? – Alex
https://www.youtube.com/watch?v=l91ISfcuzDw – Strawberry