Ich erstelle einen Bericht in PHP (MySQL),
Ex:
`select count(id) as tot_user from user_table
select count(id) as tot_cat from cat_table
select count(id) as tot_course from course_table`
So habe ich 12 Tische.
Kann ich es in einer einzigen Abfrage machen. Wenn ich es tat? Prozess wird langsam?
Antworten:
quelle
Wenn Sie MyISAM-Tabellen verwenden, können Sie die Statistiken am schnellsten direkt abfragen:
Wenn Sie InnoDB haben, müssen Sie mit count () abfragen, da der in information_schema.tables gemeldete Wert falsch ist.
quelle
Sie können uns sicherlich die von Ben James postulierte Select Agregation-Anweisung geben. Dies führt jedoch zu einer Ansicht mit so vielen Spalten, wie Sie Tabellen haben. Eine alternative Methode kann wie folgt sein:
Das Schöne an einem solchen Ansatz ist, dass Sie die Union-Anweisungen explizit schreiben und eine Ansicht generieren oder eine temporäre Tabelle erstellen können, um Werte zu speichern, die nacheinander aus einem Prozess mit Variablen anstelle Ihrer Tabellennamen hinzugefügt werden. Ich tendiere eher zu letzterem, aber es hängt wirklich von den persönlichen Vorlieben und der Anwendung ab. Wenn Sie sicher sind, dass sich die Tabellen niemals ändern werden, möchten Sie die Daten in einem einzelnen Zeilenformat und Sie werden keine Tabellen hinzufügen. bleib bei Ben James 'Lösung. Ansonsten würde ich Flexibilität empfehlen, Sie können immer eine Kreuztabellenstruktur hacken.
quelle
quelle
quelle
Ich weiß, dass dies ein alter Stapel ist, aber ich werde diesen Multi-SQL-Auswahlfall veröffentlichen
quelle