Eu tenho um esquema com várias visualizações. Preciso verificar os planos de execução para garantir que os índices apropriados estejam em vigor e em uso.
Como eu faço isso?
Eu prefiro não ter que copiar e colar a saída do show create view <viewname>
into explain
, especialmente porque algumas das visualizações são construídas sobre outras e isso seria bastante trabalhoso.
mysql
performance
execution-plan
view
Matt Fenwick
fonte
fonte
select * from <view_name>
será compatível?Respostas:
Isto é o que eu tentei pela primeira vez:
Obviamente, isso não funciona - é o mesmo que fazer
describe view_name
.No entanto,
select * from view_name
parece funcionar:fonte
Use a tabela information_schema.views
Isso irá gerar o EXPLAIN para todas as visualizações
Isso irá gerar o EXPLAIN para todas as visualizações no banco de dados mydb
De uma chance !!!
ATUALIZAÇÃO 22-03-2012 11:30 EDT
@ MattFenwick, sua resposta é muito mais simples que a minha. Aqui está um exemplo que experimentei no meu PC executando o MySQL 5.5.12. Executei EXPLAIN na versão SELECT da sua resposta e no EXPLAIN gerado a partir da minha resposta:
Ambos produziram o mesmo plano EXPLAIN. Vou mudar minha resposta para implementar seu caminho. Você recebe um +1 de mim, embora seja +2 por simplicidade. Você deve seguir em frente e aceitar sua própria resposta.
Aqui está um factóide interessante sobre as visualizações no MySQL: Uma visualização é representada em dois lugares no banco de dados information_schema
Isso irá gerar o EXPLAIN para todas as visualizações
ou
Isso irá gerar o EXPLAIN para todas as visualizações no banco de dados mydb
ou
fonte