Usando EXPLAIN para otimizar a indexação

Ás vezes, não é fácil identificar quais colunas de uma tabela de índice, mesmo que você tenha identificado queries lentas na sua aplicação. O EXPLAIN é projetado para auxiliar no processo de otimização consulta, fornecendo uma visão sobre a forma como o otimizador MySQL lida com uma consulta específica.

Por | @nmuller99 Programação
Ás vezes, não é fácil identificar quais colunas de uma tabela de índice, mesmo que você tenha identificado queries lentas na sua aplicação. O EXPLAIN é projetado para auxiliar no processo de otimização consulta, fornecendo uma visão sobre a forma como o otimizador MySQL lida com uma consulta específica.

Para analisar uma consulta, segue a consulta com EXPLAIN a palavra-chave:
 
EXPLAIN
SELECT film.title
   FROM actor, film, film_actor
  WHERE actor.actor_id = film_actor.actor_id
    AND film.film_id = film_actor.film_id
    AND actor.last_name = 'Walken'

O retorno:
 
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: actor
         type: ALL
possible_keys: PRIMARY
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 200
        Extra: Using where
*************************** 2. row ***************************
           id: 1
  select_type: SIMPLE
        table: film_actor
         type: ref
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 4
          ref: sakila.actor.actor_id
         rows: 26
        Extra: Using index
*************************** 3. row ***************************
           id: 1
  select_type: SIMPLE
        table: film
         type: eq_ref
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 4
          ref: sakila.film_actor.film_id
         rows: 1
        Extra:
3 rows in set (0.00 sec)


O EXPLAIN retorna uma linha de informação para cada tabela utilizada na instrução SELECT. As tabelas são listadas na ordem em que o MySQL lê os dados, durante o processamento da consulta.

O principal é ver onde estão ans linhas fundamentais onda a chave da coluna é NULL, onde o tipo de coluna é range, index, ou ALL, ou quando a coluna extra contém: "Using filesort or Using temporary". Essas consultas devem ser cuidadosamente examinadas para uma correta utilização dos índices que geralmente indicam que o índice não está sendo usado.
Referência: dev.mysql.com

Mais sobre: mysql explain
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo