Mam schemat z wieloma widokami. Muszę sprawdzić plany wykonania, aby upewnić się, że odpowiednie indeksy są na miejscu i są używane.
Jak mam to zrobic?
Wolałbym nie kopiować i wklejać danych wyjściowych show create view <viewname>
do explain
, zwłaszcza, że niektóre widoki są zbudowane na innych widokach, co byłoby dość uciążliwe.
mysql
performance
execution-plan
view
Matt Fenwick
źródło
źródło
select * from <view_name>
pasuje?Odpowiedzi:
Oto, co najpierw wypróbowałem:
Oczywiście to nie działa - to tak samo jak robienie
describe view_name
.Jednak
select * from view_name
wydaje się działać:źródło
Skorzystaj z tabeli information_schema.views
Spowoduje to wygenerowanie WYJAŚNIENIA dla wszystkich widoków
Spowoduje to wygenerowanie WYJAŚNIENIA dla wszystkich widoków w bazie danych mydb
Spróbuj !!!
AKTUALIZACJA 22.03.2012 11:30 EDT
@MattFenwick, twoja odpowiedź jest o wiele prostsza niż moja. Oto przykład, który wypróbowałem na moim komputerze z systemem MySQL 5.5.12. Uruchomiłem EXPLAIN zarówno dla wersji SELECT z twojej odpowiedzi, jak i EXPLAIN wygenerowanej z mojej odpowiedzi:
Obaj opracowali ten sam plan WYJAŚNIJ. Zmienię swoją odpowiedź, aby wdrożyć twój sposób. Dostajesz ode mnie +1, chociaż dla uproszczenia jest to +2. Powinieneś śmiało zaakceptować własną odpowiedź w tej sprawie.
Oto interesujący faktoid o WIDOKACH w MySQL: Widok jest reprezentowany w dwóch miejscach w bazie danych information_schema
Spowoduje to wygenerowanie WYJAŚNIENIA dla wszystkich widoków
lub
Spowoduje to wygenerowanie WYJAŚNIENIA dla wszystkich widoków w bazie danych mydb
lub
źródło