Perfomance em MySQL      Ellison Leão
Conteúdo  ●   EXPLAIN neles!  ●   MySQL Pivot  ●   Boas práticas  ●   Baseado em fatos reais
Antes de tudoCREATE TABLE exams (     pkey int(11) NOT NULL auto_increment,     name varchar(15),     exam int,     score ...
EXPLAIN● EXPLAIN antes de qualquer consulta, traz as informações de execução da mesma● Ótima ferramenta para otimização de...
mysql> EXPLAIN SELECT pkey FROM exams
● select_type - mostra o tipo de select utilizado. tipos( SIMPLE,  PRIMARY, etc..● table - mostra o nome da tabela de onde...
Um pouco mais complexoexemplo de explain em uma consulta no database                  eadsesipr
MySQL Pivot ● Também chamado de Cross-Tabulation ● Agrupamento de vários campos em uma única   linha ● Ideal para relatóri...
mysql > select * from exams;
E se quisessemos agrupar as notas de  cada aluno em apenas uma linha?
Pivot neles!SELECT name  ,SUM(IF(exam=1,score,null))   as   nota1  ,SUM(IF(exam=2,score,null))   as   nota2  ,SUM(IF(exam=...
Resultado
Vantagens   ● Organização   ● Agrega grande quantidade de informação em uma    única linha (gráficos?)Desvantagens   ● Que...
Boas práticas
● Não seja guloso. Peça apenas o necessário (evite SELECT *);● Os index são seus amigos ( cuidado com os  excessos - index...
A query a seguir é baseada em fatos reais...
Perguntas?     :)
Referências  ● http://weevilgenius.net/2010/09/mysql-explain-reference/  ● http://en.wikibooks.org/wiki/MySQL/Pivot_table ...
Upcoming SlideShare
Loading in …5
×

Perfomance em MySQL

907 views

Published on

Published in: Entertainment & Humor
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
907
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Perfomance em MySQL

  1. 1. Perfomance em MySQL Ellison Leão
  2. 2. Conteúdo ● EXPLAIN neles! ● MySQL Pivot ● Boas práticas ● Baseado em fatos reais
  3. 3. Antes de tudoCREATE TABLE exams (     pkey int(11) NOT NULL auto_increment,     name varchar(15),     exam int,     score int,    PRIMARY KEY (pkey) ); e mais alguns inserts..
  4. 4. EXPLAIN● EXPLAIN antes de qualquer consulta, traz as informações de execução da mesma● Ótima ferramenta para otimização de consultas
  5. 5. mysql> EXPLAIN SELECT pkey FROM exams
  6. 6. ● select_type - mostra o tipo de select utilizado. tipos( SIMPLE, PRIMARY, etc..● table - mostra o nome da tabela de onde vem o resultado (para quando são efetuados JOINs entre tabelas);● type - tipo de join usado. Do melhor para o pior tipo temos: system, const, eq_ref, ref, fulltext, range, index, all;● possible_keys - indica quais os índices que o MySQL pode usar para encontrar resultados nesta tabela;● key - índice usado na consulta, ou NULL caso não tenham sido usados índices;● key_len - tamanho do índice usado, caso exista;● ref - coluna(s) usada(s) com a key para devolver resultados;● rows - número de registos que o MySQL tem de examinar para executar a consulta;● extra - informação adicional acerca de como o MySQL vai executar a consulta. Evite sempre o aparecimento de “using filesort” e “using temporary“.
  7. 7. Um pouco mais complexoexemplo de explain em uma consulta no database eadsesipr
  8. 8. MySQL Pivot ● Também chamado de Cross-Tabulation ● Agrupamento de vários campos em uma única linha ● Ideal para relatórios com bastante dados agregados
  9. 9. mysql > select * from exams;
  10. 10. E se quisessemos agrupar as notas de cada aluno em apenas uma linha?
  11. 11. Pivot neles!SELECT name ,SUM(IF(exam=1,score,null)) as nota1 ,SUM(IF(exam=2,score,null)) as nota2 ,SUM(IF(exam=3,score,null)) as nota3 ,SUM(IF(exam=4,score,null)) as nota4FROM exams GROUP BY name
  12. 12. Resultado
  13. 13. Vantagens ● Organização ● Agrega grande quantidade de informação em uma única linha (gráficos?)Desvantagens ● Query um pouco mais complexa
  14. 14. Boas práticas
  15. 15. ● Não seja guloso. Peça apenas o necessário (evite SELECT *);● Os index são seus amigos ( cuidado com os excessos - indexes malcriados podem deixar a query mais lenta);● SEMPRE use o EXPLAIN para dissecar suas queries e melhorá-las.● Se puder, evite subconsultas.
  16. 16. A query a seguir é baseada em fatos reais...
  17. 17. Perguntas? :)
  18. 18. Referências ● http://weevilgenius.net/2010/09/mysql-explain-reference/ ● http://en.wikibooks.org/wiki/MySQL/Pivot_table ● http://dev.mysql.com/doc/refman/5.0/en/explain.html ● http://www.mysqlperformanceblog.com/

×