Generuję raport w php (mysql),
dawny:
`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`
W ten sposób mam 12 stołów.
Czy mogę to zrobić w jednym zapytaniu. Gdybym to zrobił? Proces staje się powolny?
Odpowiedzi:
źródło
Jeśli używasz tabel MyISAM, najszybszym sposobem jest bezpośrednie zapytanie o statystyki:
Jeśli masz InnoDB, musisz wykonać zapytanie z count (), ponieważ zgłoszona wartość w information_schema.tables jest nieprawidłowa.
źródło
Z pewnością możesz użyć instrukcji Select Agregation zgodnie z postulatem Bena Jamesa, jednak spowoduje to wyświetlenie widoku z tyloma kolumnami, ile masz tabel. Alternatywną metodą może być:
Zaletą takiego podejścia jest to, że możesz jawnie napisać instrukcje Union i wygenerować widok lub utworzyć tabelę tymczasową, aby przechowywać wartości, które są dodawane kolejno z procesu, używając zmiennych zamiast nazw tabel. Mam tendencję do wybierania tego drugiego, ale tak naprawdę zależy to od osobistych preferencji i zastosowania. Jeśli masz pewność, że tabele nigdy się nie zmienią, chcesz, aby dane były w formacie pojedynczego wiersza i nie będziesz dodawać tabel. trzymaj się rozwiązania Bena Jamesa. W przeciwnym razie radziłbym elastyczność, zawsze możesz zhakować strukturę krzyżową.
źródło
źródło
źródło
Wiem, że to stary stos, ale opublikuję ten przypadek wyboru Multi-SQL
źródło