Como usar o MySQL Explique a declaração

Como usar o MySQL Explique a declaração
O usuário do banco de dados precisa executar diferentes tipos de consultas para diferentes fins. Mas às vezes muitas consultas não retornam os resultados esperados e o administrador do banco de dados precisa descobrir o motivo. MySQL contém uma ferramenta útil chamada EXPLICAR para diagnosticar o erro para o qual a declaração de consulta não está funcionando corretamente. É usado no início de qualquer declaração de consulta para fornecer informações sobre a execução da consulta. Explique a palavra -chave pode ser usada com declarações selecionadas, inseridas, atualizadas, excluir e substituir. Como explicar a palavra -chave funciona com instruções selecionadas para diagnosticar erros da consulta ou otimizar a consulta é mostrada neste artigo.

Explique a saída de palavras -chave para consulta selecionada:

Quando a palavra -chave explicar é executada com a instrução SELECT, a saída de explicar retornará as seguintes colunas.

Coluna Descrição
eu ia Indica o identificador da consulta. Representa o número seqüencial de consultas selecionadas.
selecione o tipo Indica o tipo de consulta selecionada. O tipo pode ser simples, primário, subconstrado, união, etc.
mesa Indica o nome da tabela usado na consulta.
partições Indica as partições da tabela particionada examinada.
tipo Indica o tipo de junção ou o tipo de acesso das tabelas.
possível_keys Indica as chaves que podem ser usadas pelo MySQL para encontrar linhas da tabela.
chave Indica o índice usado por mysql.
key_len Indica o comprimento do índice que usará pelo otimizador de consulta.
Ref Indica as colunas ou constantes que são comparadas ao índice nomeado na coluna da chave
linhas Indica as listas de registros que foram examinados.
filtrado Indica a porcentagem estimada de linhas de tabela que serão filtradas pela condição.
extra Indica as informações adicionais sobre o plano de execução da consulta.

Suponha que você tenha duas tabelas relacionadas nomeadas clientes e ordens no banco de dados nomeado empresa. As instruções SQL necessárias para criar o banco de dados e as tabelas com dados são fornecidas abaixo.

Criar empresa de banco de dados;
Empresa de uso;
Crie clientes de tabela (
ID Int (5) Auto_increment Primária Chave,
Nome Varchar (50) não nulo,
celular_no varchar (50) não nulo,
email varchar (50) não nulo) mecanismo = innodb;
Crie pedidos de tabela (
Id Varchar (20) Chave primária,
data de ordem_date,
cliente_id int (5) não nulo,
Delivery_address Varchar (50) Não NULL,
Valor int (11),
Foreign Key (Customer_Id) Referências Clientes (ID))
Motor = innodb;
Insira os valores dos clientes
(Null, 'Johnathan', '18477366643', '[email protected] '),
(Null, 'Musfiquur Rahman', '17839394985', '[email protected] '),
(Null, 'Jimmy', '14993774655', '[email protected] ');
Insira o valor dos pedidos
('1937747', '2020-01-02', 1, 'New Work', 1000),
('8633664', '2020-02-12', 3, 'Texas', 1500),
('4562777', '2020-02-05', 1, 'California', 800),
('3434959', '2020-03-01', 2, 'New Work', 900),
('7887775', '2020-03-17', 3, 'Texas', 400);

Execute a seguinte declaração para ver a lista de registros atual de clientes mesa.

Selecione * dos clientes;

Execute a seguinte declaração para ver a lista de registros atual de ordens mesa.

Selecione * de pedidos;

Uso da declaração de explicação simples:

A seguinte instrução SQL retornará a palavra -chave da declaração de explicação de uma consulta selecionada simples que recupera todos os registros da tabela de clientes.

Explique selecionar * FROM CLIENTES \ G;

A saída a seguir aparecerá após a execução da declaração. É uma consulta de mesa única e sem cláusulas especiais como junção, união, etc. são usados ​​na consulta. Para isso, o valor de selecione o tipo é SIMPLES. A tabela de clientes contém apenas três registros, é por isso que o valor de linhas é 3. O valor do filtrado é 100% porque todos os registros da tabela são recuperados.

Uso de explicar em consulta selecionada com junção:

A declaração de explicação a seguir é aplicada em uma consulta selecionada de duas tabelas com a cláusula de junção e uma condição onde.

Explique clientes selecionados.nome, ordens.order_date, ordens.quantia
De clientes
Junte -se aos pedidos em (clientes.id = ordens.Identificação do Cliente)
Onde clientes.nome = 'Johnathan' \ g

A saída a seguir aparecerá após a execução da declaração. Aqui, selecione o tipo é simples para ambas as tabelas. Duas tabelas estão relacionadas por um relacionamento um para muitos. A chave primária de clientes A tabela é usada como uma chave estrangeira de ordens mesa. Para isso, o valor de possível_keys Para a segunda fila é Identificação do Cliente. O valor filtrado é 33% para clientes mesa porque 'Johnathan' é a primeira entrada desta tabela e não há necessidade de pesquisar mais. O valor filtrado de ordens A tabela é 100% por causa de todos os valores de ordens Tabela necessária para verificar para recuperar os dados.

Há um aviso na produção da declaração acima. A declaração a seguir é usada para ver a consulta que é executada após fazer alguma alteração pelo otimizador de consulta ou verificar o motivo do erro se ocorrer algum erro após executar a consulta.

Show avisos \ g

Não há erro na consulta. A saída mostra a consulta modificada que é executada.

Uso de explicar para descobrir o erro de selecionar consulta:

A consulta selecionada que é usada na declaração de explicação a seguir contém um erro. O formato de data que é suportado pelo MySQL é 'AAAA-MM-DD'. Mas na condição de onde esta consulta, o valor da data é dado como 'Dd-mm-yyyy' isso esta errado.

Explique clientes selecionados.nome, ordens.order_date, ordens.quantia
De clientes
Junte -se aos pedidos em (clientes.id = ordens.Identificação do Cliente)
Onde ordens.order_date = '10 -10-2020 '\ g

A saída a seguir será apareceu após a execução da declaração. Vai mostrar dois avisos. Um é o padrão que é explicado no exemplo anterior e outro é para o erro mencionado antes.

Execute a declaração para ver o erro.

Show avisos \ g

A saída mostra o erro claramente com uma mensagem de erro e nome da coluna.

Uso de explicar em consulta selecionada com a Union All Operator:

Union All Operator é usado na consulta selecionada para recuperar todos os valores de coluna correspondentes com duplicatas das tabelas relacionadas. A declaração a seguir exibirá a saída de explicar da aplicação da união, todo o operador entre clientes e ordens mesas.

Explique selecionar ID como ID
De clientes
Union All
Selecione Customer_id como ID
De ordens \ g

A saída a seguir aparecerá após a execução da declaração. Aqui, o valor de selecione o tipo é UNIÃO para a segunda linha da saída e o valor de Extra é o índice.

Conclusão:

Os usos muito simples da declaração de explicação são mostrados neste artigo. Mas essa afirmação pode ser usada para resolver vários problemas complicados de banco de dados e otimizar o banco de dados para melhor desempenho.