SlideShare a Scribd company logo
1 of 37
Download to read offline
Melhorando o
desempenho de
suas consultas
no MySQL
Como não aborrecer o DBA e ter um bom
desempenho em suas consultas.
É necessária a otimização?

Grande parte da responsabilidade para que o
banco de dados funcione bem é de quem
modela a base de dados!

      Uma Base de dados
     bem modelada é uma
    base importante para
        se criar sistemas
       coesos e robustos!
                                FreeDigitalPhotos.net
É necessária a otimização?

Mas em alguns sistemas, temos uma
modelagem muito particular...


      Nem sempre temos
      uma base de dados
         modelada como
            sonhamos...

                              FreeDigitalPhotos.net
É necessária a otimização?

Nestes casos, a otimização deve ser
primordial!


"Não posso escolher como me sinto, mas
 posso escolher o que fazer a respeito".
                   William Shakespeare


                                           FreeDigitalPhotos.net
Entendendo o banco de dados
relacional

Resumidamente, existem duas maneiras de se
trabalhar com um banco de dados relacional...




      FreeDigitalPhotos.net                                          FreeDigitalPhotos.net




                              Você é livre para escolher qual utilizar!
                      "Não é livre quem não obteve domínio sobre si".Pitágoras
Entendendo o banco de dados
relacional

Banco de dados relacionais são matemáticos.
Eles trabalham, resumidamente, com teoria
de conjuntos...
● Produto cartesiano
● Cardinalidade


                                                             FreeDigitalPhotos.net




   "A matemática é o alfabeto com o qual Deus escreveu o universo". Pitágoras
Ferramentas úteis de análise

Podemos analisar uma função explícita,
utilizando o BENCHMARK.

SELECT BENCHMARK(1000000,2+2);


O MySQL irá executar um milhão de vezes a
expressão, em determinado tempo.
Ferramentas úteis de análise

Podemos entender melhor o funcionamento
de nosso script usando o EXPLAIN.

EXPLAIN SELECT * FROM ctbplc;


O MySQL retornará um registro contendo
uma análise do script.
Ferramentas úteis de análise

● Colunas de retorno do EXPLAIN SELECT
  ○ ID: Número sequencial que identifica as consultas
    dentro do SELECT.
  ○ SELECT_TYPE: Tipo de cláuso SQL:
    ■ SIMPLE (Select simples)
    ■ PRIMARY (Select mais externa)
    ■ UNION (segunda select ou select proveniente do UNION)
    ■ DEPENDENT UNION (segunda select ou select proveniente do
        UNION)

     ■ SUBQUERY (primeiro select encadeado - subquery)
     ■ DEPENDENT SUBQUERY (primeiro select encadeado da subquery)
     ■ DERIVED (select de tabela derivada - Subquery da cláusula FROM)
Ferramentas úteis de análise

● Colunas de retorno do EXPLAIN SELECT
  ○ TABLE: Tabela do registro de saída.
  ○ TYPE: Tipo de JOIN:
    ■ SYSTEM (tabela que só tem uma linha, tabela de sistema)
    ■ CONST (tabela que tem no máximo uma linha coincidente. São constantes)
    ■ EQ_REF (todas as partes da chaves são usadas para combinação de registros)
    ■ REF (idem ao EQ_REF, mas com índices não únicos)
    ■ REF_OR_NULL (idem ao REF, mas com busca IS NULL)
    ■ RANGE (faixa de busca quando o campo é comparado a uma constante)
    ■ INDEX (quando a consulta só usa colunas que são parte de um índice)
    ■ ALL (varredura completa na tabela para a busca de registros)
Ferramentas úteis de análise

● Colunas de retorno do EXPLAIN SELECT
  ○ POSSIBLE_KEYS: Sugestão de índices a serem
    utilizados.
  ○ KEY: Chave que está sendo utilizado na consulta.
  ○ KEY_LEN: Tamanho da chave do campo KEY.
  ○ REF: Colunas utilizadas pela chave do campo KEY.
  ○ ROWS: Quantidade de linhas que será analisada
    para gerar a consulta.
Ferramentas úteis de análise

● Colunas de retorno do EXPLAIN SELECT
     ○ EXTRA: Sugestão de índices a serem utilizados.
       ■ Distinct (Termina a busca quando encontra o primeiro registro coincidente)
       ■ Not exists (idem ao Distinct, mas com LEFT JOIN)
       ■ Range checked for each record (index map: #)
               (O MySQL não encontrou um bom índice para usar)

          ■    Using filesort (Pesquisa extra na tabela para realizar a ordem de classificação)
          ■    Using index (Recuperação feita apenas com índices)
          ■    Using temporary (Utilização de tabelas temporárias para realizar a busca)
          ■    Using where (Tipo de restrição na busca de registros)

Detalhes: http://dev.mysql.com/doc/refman/5.1/en/explain-output.html
Melhorando a performance

● Dicas importantes para SELECT a que já
  existem:
  ○    ANALYZE TABLE: Esta função atualizará as estatísticas sobre a
       tabela. Tais estatísticas são utilizadas pelo MYSQL para seleção
       de como e qual índice pode ser utilizado.
   ●    Utilize SHOW INDEX FROM para verificar se
        a referência de cardinalidade (coluna
        Cardinality) está atualizada!

   ●    Os campos das chaves utilizadas devem ser do
        mesmo tipo e tamanho para que as buscas sejam
        mais rápidas (também influencia no Join).
Melhorando a performance

● Dicas importantes para WHERE:
  ○ ANALYZE TABLE: Esta função atualizará as
    estatísticas sobre a tabela. Tais estatísticas são
    utilizadas pelo MYSQL para seleção de como e
    qual índice pode ser utilizado.


  ○ Se todas colunas usadas do índice são numéricas,
    então somente a árvore de índice é usada para
    resolver a consulta.
Melhorando a performance

● Dicas importantes para WHERE:
  ○ Se você não utiliza colunas de todas tabelas
    usadas, o MySQL irá parar a varredura das
    tabelas não usadas logo que encontrar a primeira
    coincidência.

     SELECT DISTINCT t1.a
        FROM t1,t2
        WHERE t1.a=t2.a;
Melhorando a performance

● Dicas importantes para WHERE:
  ○ Você está unindo muitas tabelas e as colunas nas
    quais você está fazendo um ORDER BY não são
    todas da primeira tabela que não é constante.


  ○ O ideal é que os campos do ORDER BY sejam da
    primeira tabela.
Melhorando a performance

● Dica importante para WHERE:
  ○ Tente usar campos no ORDER BY façam parte de
    índices. Isso evita um processo de ordenação por
    parte do MySQL.


  ○ Internamente, o MySQL ordena as consultas
    GROUP BY como de fosse o ORDER BY. Para que
    só o agrupamento aconteça, inclua no seu script
    um ORDER BY NULL;
Melhorando a performance

● Dica importante para LIMIT:
  ○ O MySQL vai buscar a quantidade de registros
    estipulados no LIMIT e só depois vai executar
    outras funções (ORDER BY ou GROUP BY, por
    exemplo).
Melhorando a performance

● Dicas importantes para INSERT:
    ○ Importação de dados: Pode-de utilizar o LOAD
      DATA INFILE. A velocidade de inserção de
      registros pode melhorar em até 20x.

 ZQuery.Close;
 ZQuery.SQL.Clear;
 ZQuery.SQL.Text:='LOAD DATA INFILE ''c:ctbplc.csv'' INTO TABLE ctbplc FIELDS
 TERMINATED BY '','' ENCLOSED BY ''"''LINES TERMINATED BY ''n''ignore 1 lines;';
 ZQuery.ExecSQL;
Melhorando a performance

● Dicas importantes para INSERT:
  ○ Na importação de um volume grande de dados,
    também é válido desabilitar os índices com ALTER
    TABLE <TABELA> DISABLE/ENABLE KEYS.
Melhorando a performance
● Dicas importantes para INSERT:
  ○ Lotes de inserção: Pode-de utilizar o BEGIN /
    END / COMMIT para montar um bloco de
    comandos insert. A vantagem em velocidade se
    torna interessante com blocos de 1000 registro.
      ZQuery.Close;
      ZQuery.SQL.Clear;
      ZQuery.SQL.Text:='start transaction';
      ZQuery.ExecSQL;
      try
        //Comandos dos inserts
        ...
        ZQuery.Close;
        ZQuery.SQL.Clear;
        ZQuery.SQL.Text:='commit';
        ZQuery.ExecSQL;
      except
        ZQuery.Close;
        ZQuery.SQL.Clear;
        ZQuery.SQL.Text:='rollback';
        ZQuery.ExecSQL;
      end;
Melhorando a performance
● Dica importante para UPDATE:
  ○ Deixar para alterar todo o registro de uma só vez.
Melhorando a performance
● Dica importante para DELETE:
  ○ Se for "limpar" uma tabela, use o TRUNCATE
    TABLE
Melhorando a performance
● Dicas importantes:
  ○ Dentro do possível, dê preferência para a
    utilização de conexões persistentes. Isso evita
    sobrecarga de conexões no servidor de banco de
    dados.
Melhorando a performance
● Dicas importantes:
  ○ Se suas buscas usam uma determinada ordem de
    campos, mas na tabela esses campos estão em uma
    ordem diferente, mude a ordem dos campos da
    tabela com ALTER TABLE... ORDER BY expr1,
    expr2....
Melhorando a performance
● Quebrando alguns paradigmas:
  ○ Índices com muitos campos podem ser substituidos
    por um único campo "hash": SELECT * FROM
    <nome_tabela> WHERE col_hash=MD5(concat
    (col1,col2)) AND col_1='constante' AND
    col_2='constante'.
Melhorando a performance
● Quebrando alguns paradigmas:
  ○ Tabelas com muita alteração: evite as colunas
    varchar e blob. Dê preferência a registros de
    tamanho fixo.
Melhorando a performance
● Quebrando alguns paradigmas:
     ○ Não tenha vergonha de quebrar, em pontos
       críticos, a 3ª forma normal.


Mais detalhes: http://pt.wikipedia.org/wiki/Banco_de_dados_relacional
Entendendo melhor as coisas...
● Como funcionam os índices?




                   FreeDigitalPhotos.net
Entendendo melhor as coisas...
● Onde os índices são usados:
  ○ Para encontrar rapidamente os registros que
    coincidam com uma cláusula WHERE.
  ○ Para recuperar registros de outras tabelas ao
    realizar joins.
  ○ Para encontrar o valor MAX() ou MIN() para uma
    coluna indexada especifica.
  ○ Para ordenar ou agrupar uma tabela.
Entendendo melhor as coisas...
● Exemplos:
  ○   Se a tabela possuir um índice de múltiplas colunas, qualquer prefixo
      mais à esquerda do índice pode ser usado pelo MySQL para
      encontrar registros. Por exemplo, se você possui um índice de três
      colunas em (col1, col2, col3), você tem capacidades de busca
      indexada em (col1), (col1, col2) e (col1, col2, col3).

  ○   SELECT col3 FROM <nome_tabela> WHERE col1=1 .
  ○   SELECT * FROM <nome_tabela> WHERE col1=val1 AND col2=val2 .
Entendendo melhor as coisas...
● Exemplos:
  ○   Se a tabela possuir um índice de múltiplas colunas, qualquer prefixo
      mais à esquerda do índice pode ser usado pelo MySQL para
      encontrar registros. Por exemplo, se você possui um índice de três
      colunas em (col1, col2, col3), você tem capacidades de busca
      indexada em (col1), (col1, col2) e (col1, col2, col3).

  ○   SELECT * FROM <nome_tabela> WHERE col1=val1;
  ○   SELECT * FROM <nome_tabela> WHERE col2=val2;
  ○   SELECT * FROM <nome_tabela> WHERE col2=val2 AND col3=val3;
Entendendo melhor as coisas...
● Exemplos:
  CREATE TABLE teste (
  id INT NOT NULL,
  ultimo_nome CHAR(30) NOT NULL,
  primeiro_nome CHAR(30) NOT NULL,
  PRIMARY KEY (id),
  INDEX nome (ultimo_nome,primeiro_nome));


  ○   SELECT * FROM teste WHERE ultimo_nome="Lopes";
  ○   SELECT * FROM teste WHERE ultimo_nome="Lopes" AND primeiro_nome="
      Helder";
  ○   SELECT * FROM teste WHERE ultimo_nome="Lopes" AND (primeiro_nome="
      Helder" OR primeiro_nome="Francisco");
  ○   SELECT * FROM teste WHERE ultimo_nome="Lopes" AND primeiro_nome >="
      H" AND primeiro_nome < "S";
  ○   SELECT * FROM teste WHERE primeiro_nome="Helder";
  ○   SELECT * FROM teste WHERE ultimo_nome="Lopes" OR primeiro_nome="
      Helder";
Entendendo melhor as coisas...
● Exemplos:
  ○   Um índice é usado para colunas que você compara com os seguintes
  operadores: =, >, >=, <, <=, BETWEEN, IS NULL ou um LIKE com um
  padrão que começa com um prefixo sem meta caracteres.

  ○   SELECT * FROM <nome_tabela> WHERE key_col LIKE "Helder%";
  ○   SELECT * FROM <nome_tabela> WHERE key_col LIKE "Hel%_er%"
  ○   SELECT * FROM <nome_tabela> WHERE key_col LIKE "%Helder%";
Entendendo melhor as coisas...
● Cuidado com os AND:
  ○ Qualquer índice que não cobre todos os níveis de
    AND na cláusula WHERE não é utilizado para
    otimizar a consulta.
Entendendo melhor as coisas...
● Índices pré-fixados:
  ○ Para colunas CHAR, VARCHAR, BLOB e TEXT pode-
    se indexar um prefixo da coluna.
  ○ Isto é muito mais rápido e necessita de menos
    espaço em disco do que indexar a coluna inteira.

  CREATE TABLE teste (
  nome CHAR(200) NOT NULL,
  INDEX nome_indice (nome(10))
  );
Bibliografia
●   Baron Schwartz, Peter Zaitsev, Vadim Tkachenko, Jeremy D. Zawodny, Arjen Lentz, Derek J.
    Balling. High Performance MySQL: Optimization, Backups, Replication, and More. O'Reilly Media,
    Inc., 2008; 2ª ed; ISBN 0596554753.

●   Wikipédia. Árvore B. http://pt.wikipedia.org/wiki/%C3%81rvore_B              Acessado em
    18/02/2013.

More Related Content

What's hot

MySQL Query And Index Tuning
MySQL Query And Index TuningMySQL Query And Index Tuning
MySQL Query And Index TuningManikanda kumar
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQLArley Rodrigues
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Conceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBDConceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBDVinicius Buffolo
 
[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQLKingHost - Hospedagem de sites
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLDaniel Brandão
 
Apostila de Banco dados
Apostila de Banco dadosApostila de Banco dados
Apostila de Banco dadosFernando Palma
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Leinylson Fontinele
 
Mer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoMer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoRademaker Siena
 
Criando rede WLAN e SERVIDOR DNS E HTTP no Packet Tracer
Criando rede WLAN e SERVIDOR DNS E HTTP no Packet TracerCriando rede WLAN e SERVIDOR DNS E HTTP no Packet Tracer
Criando rede WLAN e SERVIDOR DNS E HTTP no Packet TracerEdenilton Michael
 
Introdução a Banco de Dados
Introdução a Banco de DadosIntrodução a Banco de Dados
Introdução a Banco de DadosDaniel Brandão
 
Sql - Introdução ao mysql
Sql - Introdução ao mysqlSql - Introdução ao mysql
Sql - Introdução ao mysqlArley Rodrigues
 

What's hot (20)

Tipos de dados em MySQL
Tipos de dados em MySQLTipos de dados em MySQL
Tipos de dados em MySQL
 
MySQL Query And Index Tuning
MySQL Query And Index TuningMySQL Query And Index Tuning
MySQL Query And Index Tuning
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQL
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Sql query patterns, optimized
Sql query patterns, optimizedSql query patterns, optimized
Sql query patterns, optimized
 
Conceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBDConceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBD
 
[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL
 
Modelagem de Dados
Modelagem de DadosModelagem de Dados
Modelagem de Dados
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
Aula 06 - TEP - Introdução SQLite
Aula 06 - TEP - Introdução SQLiteAula 06 - TEP - Introdução SQLite
Aula 06 - TEP - Introdução SQLite
 
Apostila de Banco dados
Apostila de Banco dadosApostila de Banco dados
Apostila de Banco dados
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
 
Mer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoMer - Modelo Entidade Relacionamento
Mer - Modelo Entidade Relacionamento
 
Criando rede WLAN e SERVIDOR DNS E HTTP no Packet Tracer
Criando rede WLAN e SERVIDOR DNS E HTTP no Packet TracerCriando rede WLAN e SERVIDOR DNS E HTTP no Packet Tracer
Criando rede WLAN e SERVIDOR DNS E HTTP no Packet Tracer
 
Introdução a Banco de Dados
Introdução a Banco de DadosIntrodução a Banco de Dados
Introdução a Banco de Dados
 
Introdução CSS
Introdução CSSIntrodução CSS
Introdução CSS
 
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
 
Sql - Introdução ao mysql
Sql - Introdução ao mysqlSql - Introdução ao mysql
Sql - Introdução ao mysql
 

Viewers also liked

Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresDouglas V. Pasqua
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPAlmir Neto
 
Sub-Consultas Oracle
Sub-Consultas OracleSub-Consultas Oracle
Sub-Consultas OraclePablo Garcia
 
Princípios de Administração de Dados
Princípios de Administração de DadosPrincípios de Administração de Dados
Princípios de Administração de DadosGilberto Rodrigues
 
Banco de Dados II - Unimep/Pronatec - Aula 2
Banco de Dados II - Unimep/Pronatec - Aula 2Banco de Dados II - Unimep/Pronatec - Aula 2
Banco de Dados II - Unimep/Pronatec - Aula 2André Phillip Bertoletti
 
Banco de Dados II - Unimep/Pronatec - Aula 10
Banco de Dados II - Unimep/Pronatec - Aula 10Banco de Dados II - Unimep/Pronatec - Aula 10
Banco de Dados II - Unimep/Pronatec - Aula 10André Phillip Bertoletti
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic lilianakhjhjhjh
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintóticaPablo Silva
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroJuan Basso
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginasMikeNandes
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem Claudson Oliveira
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDSPablo Silva
 

Viewers also liked (20)

Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedores
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHP
 
MySQL no Windows
MySQL no WindowsMySQL no Windows
MySQL no Windows
 
Sub-Consultas Oracle
Sub-Consultas OracleSub-Consultas Oracle
Sub-Consultas Oracle
 
Aula 7 sql - select
Aula 7   sql - selectAula 7   sql - select
Aula 7 sql - select
 
Princípios de Administração de Dados
Princípios de Administração de DadosPrincípios de Administração de Dados
Princípios de Administração de Dados
 
Banco de Dados II - Unimep/Pronatec - Aula 2
Banco de Dados II - Unimep/Pronatec - Aula 2Banco de Dados II - Unimep/Pronatec - Aula 2
Banco de Dados II - Unimep/Pronatec - Aula 2
 
Banco de Dados II - Unimep/Pronatec - Aula 10
Banco de Dados II - Unimep/Pronatec - Aula 10Banco de Dados II - Unimep/Pronatec - Aula 10
Banco de Dados II - Unimep/Pronatec - Aula 10
 
Consultas básicas em SQL
Consultas básicas em SQLConsultas básicas em SQL
Consultas básicas em SQL
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic liliana
 
Funções em C
Funções em CFunções em C
Funções em C
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 
Apostila cobol
Apostila cobolApostila cobol
Apostila cobol
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
Recursividade
RecursividadeRecursividade
Recursividade
 
PROGRAMAS QBASIC
PROGRAMAS QBASICPROGRAMAS QBASIC
PROGRAMAS QBASIC
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDS
 

Similar to Otimizando consultas MySQL

Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoHelder Lopes
 
Conceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosConceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosAlefe Variani
 
Sql apostila construcao de comandos
Sql   apostila construcao de comandosSql   apostila construcao de comandos
Sql apostila construcao de comandosrobinhoct
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Dashboards maneiros: Performance
Dashboards maneiros: PerformanceDashboards maneiros: Performance
Dashboards maneiros: PerformanceWagner Alves
 
Apresentação básica de my sql
Apresentação básica de my sqlApresentação básica de my sql
Apresentação básica de my sqlMarcus Couto
 
Alto desempenho com banco de dados MySQL
Alto desempenho com banco de dados MySQLAlto desempenho com banco de dados MySQL
Alto desempenho com banco de dados MySQLJonas Silveira
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracleEduardo Lopes
 
Modulo-02-Aula-03-conteudo-para-cer.pptx
Modulo-02-Aula-03-conteudo-para-cer.pptxModulo-02-Aula-03-conteudo-para-cer.pptx
Modulo-02-Aula-03-conteudo-para-cer.pptxAugustoNicolau2
 
modulo-15-sql-criar-e-manipular-tabelas1-2-flipbook-pdf.docx
modulo-15-sql-criar-e-manipular-tabelas1-2-flipbook-pdf.docxmodulo-15-sql-criar-e-manipular-tabelas1-2-flipbook-pdf.docx
modulo-15-sql-criar-e-manipular-tabelas1-2-flipbook-pdf.docxAnaAlmeida462833
 
Treinamento Excel Avançado
Treinamento Excel AvançadoTreinamento Excel Avançado
Treinamento Excel AvançadoLuis Dalmoneki
 
Performance Sql Server
Performance Sql ServerPerformance Sql Server
Performance Sql Serverjarlei
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)Dirceu Resende
 

Similar to Otimizando consultas MySQL (20)

Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
Conceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosConceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de Dados
 
Sql apostila construcao de comandos
Sql   apostila construcao de comandosSql   apostila construcao de comandos
Sql apostila construcao de comandos
 
Apostila basica sql
Apostila basica sqlApostila basica sql
Apostila basica sql
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
pgDay Campinas – 2015
pgDay Campinas – 2015pgDay Campinas – 2015
pgDay Campinas – 2015
 
Agbd aula4 sql_ddl
Agbd aula4 sql_ddlAgbd aula4 sql_ddl
Agbd aula4 sql_ddl
 
Dashboards maneiros: Performance
Dashboards maneiros: PerformanceDashboards maneiros: Performance
Dashboards maneiros: Performance
 
Aprofundamento de DDL e DML
Aprofundamento de DDL e DMLAprofundamento de DDL e DML
Aprofundamento de DDL e DML
 
Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
 
Apresentação básica de my sql
Apresentação básica de my sqlApresentação básica de my sql
Apresentação básica de my sql
 
Alto desempenho com banco de dados MySQL
Alto desempenho com banco de dados MySQLAlto desempenho com banco de dados MySQL
Alto desempenho com banco de dados MySQL
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracle
 
Modulo-02-Aula-03-conteudo-para-cer.pptx
Modulo-02-Aula-03-conteudo-para-cer.pptxModulo-02-Aula-03-conteudo-para-cer.pptx
Modulo-02-Aula-03-conteudo-para-cer.pptx
 
modulo-15-sql-criar-e-manipular-tabelas1-2-flipbook-pdf.docx
modulo-15-sql-criar-e-manipular-tabelas1-2-flipbook-pdf.docxmodulo-15-sql-criar-e-manipular-tabelas1-2-flipbook-pdf.docx
modulo-15-sql-criar-e-manipular-tabelas1-2-flipbook-pdf.docx
 
Sql
SqlSql
Sql
 
Treinamento Excel Avançado
Treinamento Excel AvançadoTreinamento Excel Avançado
Treinamento Excel Avançado
 
Performance Sql Server
Performance Sql ServerPerformance Sql Server
Performance Sql Server
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
 
SQL Oracle
SQL OracleSQL Oracle
SQL Oracle
 

More from Helder Lopes

Resumo: Oportunidade de Negocio Herbalife
Resumo: Oportunidade de Negocio HerbalifeResumo: Oportunidade de Negocio Herbalife
Resumo: Oportunidade de Negocio HerbalifeHelder Lopes
 
Desenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralDesenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralHelder Lopes
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphiHelder Lopes
 
Gerenciamento de Infra-Estrutura - Aula 5 - contexto organizacional
Gerenciamento de Infra-Estrutura - Aula 5 - contexto organizacionalGerenciamento de Infra-Estrutura - Aula 5 - contexto organizacional
Gerenciamento de Infra-Estrutura - Aula 5 - contexto organizacionalHelder Lopes
 
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...Helder Lopes
 
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisFundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisHelder Lopes
 
Gerenciamento de Infra-Estrutura - Aula 2 - Definições Utilizadas em Gerencia...
Gerenciamento de Infra-Estrutura - Aula 2 - Definições Utilizadas em Gerencia...Gerenciamento de Infra-Estrutura - Aula 2 - Definições Utilizadas em Gerencia...
Gerenciamento de Infra-Estrutura - Aula 2 - Definições Utilizadas em Gerencia...Helder Lopes
 
Gerenciamento de Infra-Estrutura - Aula 3 - Ferramentas de Gerenciamento - Co...
Gerenciamento de Infra-Estrutura - Aula 3 - Ferramentas de Gerenciamento - Co...Gerenciamento de Infra-Estrutura - Aula 3 - Ferramentas de Gerenciamento - Co...
Gerenciamento de Infra-Estrutura - Aula 3 - Ferramentas de Gerenciamento - Co...Helder Lopes
 
Aplicação de Redes Neurais Artificiais Paraconsistentes no auxílio do diagnós...
Aplicação de Redes Neurais Artificiais Paraconsistentes no auxílio do diagnós...Aplicação de Redes Neurais Artificiais Paraconsistentes no auxílio do diagnós...
Aplicação de Redes Neurais Artificiais Paraconsistentes no auxílio do diagnós...Helder Lopes
 
Estatística - Aula 2 - Estatística descritiva
Estatística - Aula 2 - Estatística descritivaEstatística - Aula 2 - Estatística descritiva
Estatística - Aula 2 - Estatística descritivaHelder Lopes
 
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplinaFundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplinaHelder Lopes
 
Gerenciamento de Infra-Estrutura - Aula 3 - Conceitos sobre SLA & SLM
Gerenciamento de Infra-Estrutura - Aula 3 - Conceitos sobre SLA & SLMGerenciamento de Infra-Estrutura - Aula 3 - Conceitos sobre SLA & SLM
Gerenciamento de Infra-Estrutura - Aula 3 - Conceitos sobre SLA & SLMHelder Lopes
 
Modelagem de Sistemas de Informação
Modelagem de Sistemas de InformaçãoModelagem de Sistemas de Informação
Modelagem de Sistemas de InformaçãoHelder Lopes
 
Ferramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de RedeFerramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de RedeHelder Lopes
 
Gerenciamento de Infra-Estrutura - Aula 1 - Introdução à disciplina
Gerenciamento de Infra-Estrutura - Aula 1 - Introdução à disciplinaGerenciamento de Infra-Estrutura - Aula 1 - Introdução à disciplina
Gerenciamento de Infra-Estrutura - Aula 1 - Introdução à disciplinaHelder Lopes
 
Gerenciamento e administração de Redes
Gerenciamento e administração de RedesGerenciamento e administração de Redes
Gerenciamento e administração de RedesHelder Lopes
 
Redes de computadores e Telecomunicações
Redes de computadores e TelecomunicaçõesRedes de computadores e Telecomunicações
Redes de computadores e TelecomunicaçõesHelder Lopes
 
Administração de Banco de Dados
Administração de Banco de DadosAdministração de Banco de Dados
Administração de Banco de DadosHelder Lopes
 
Sistemas para Internet e Software Livre
Sistemas para Internet e Software LivreSistemas para Internet e Software Livre
Sistemas para Internet e Software LivreHelder Lopes
 

More from Helder Lopes (19)

Resumo: Oportunidade de Negocio Herbalife
Resumo: Oportunidade de Negocio HerbalifeResumo: Oportunidade de Negocio Herbalife
Resumo: Oportunidade de Negocio Herbalife
 
Desenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralDesenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geral
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphi
 
Gerenciamento de Infra-Estrutura - Aula 5 - contexto organizacional
Gerenciamento de Infra-Estrutura - Aula 5 - contexto organizacionalGerenciamento de Infra-Estrutura - Aula 5 - contexto organizacional
Gerenciamento de Infra-Estrutura - Aula 5 - contexto organizacional
 
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
 
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisFundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
 
Gerenciamento de Infra-Estrutura - Aula 2 - Definições Utilizadas em Gerencia...
Gerenciamento de Infra-Estrutura - Aula 2 - Definições Utilizadas em Gerencia...Gerenciamento de Infra-Estrutura - Aula 2 - Definições Utilizadas em Gerencia...
Gerenciamento de Infra-Estrutura - Aula 2 - Definições Utilizadas em Gerencia...
 
Gerenciamento de Infra-Estrutura - Aula 3 - Ferramentas de Gerenciamento - Co...
Gerenciamento de Infra-Estrutura - Aula 3 - Ferramentas de Gerenciamento - Co...Gerenciamento de Infra-Estrutura - Aula 3 - Ferramentas de Gerenciamento - Co...
Gerenciamento de Infra-Estrutura - Aula 3 - Ferramentas de Gerenciamento - Co...
 
Aplicação de Redes Neurais Artificiais Paraconsistentes no auxílio do diagnós...
Aplicação de Redes Neurais Artificiais Paraconsistentes no auxílio do diagnós...Aplicação de Redes Neurais Artificiais Paraconsistentes no auxílio do diagnós...
Aplicação de Redes Neurais Artificiais Paraconsistentes no auxílio do diagnós...
 
Estatística - Aula 2 - Estatística descritiva
Estatística - Aula 2 - Estatística descritivaEstatística - Aula 2 - Estatística descritiva
Estatística - Aula 2 - Estatística descritiva
 
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplinaFundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
 
Gerenciamento de Infra-Estrutura - Aula 3 - Conceitos sobre SLA & SLM
Gerenciamento de Infra-Estrutura - Aula 3 - Conceitos sobre SLA & SLMGerenciamento de Infra-Estrutura - Aula 3 - Conceitos sobre SLA & SLM
Gerenciamento de Infra-Estrutura - Aula 3 - Conceitos sobre SLA & SLM
 
Modelagem de Sistemas de Informação
Modelagem de Sistemas de InformaçãoModelagem de Sistemas de Informação
Modelagem de Sistemas de Informação
 
Ferramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de RedeFerramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de Rede
 
Gerenciamento de Infra-Estrutura - Aula 1 - Introdução à disciplina
Gerenciamento de Infra-Estrutura - Aula 1 - Introdução à disciplinaGerenciamento de Infra-Estrutura - Aula 1 - Introdução à disciplina
Gerenciamento de Infra-Estrutura - Aula 1 - Introdução à disciplina
 
Gerenciamento e administração de Redes
Gerenciamento e administração de RedesGerenciamento e administração de Redes
Gerenciamento e administração de Redes
 
Redes de computadores e Telecomunicações
Redes de computadores e TelecomunicaçõesRedes de computadores e Telecomunicações
Redes de computadores e Telecomunicações
 
Administração de Banco de Dados
Administração de Banco de DadosAdministração de Banco de Dados
Administração de Banco de Dados
 
Sistemas para Internet e Software Livre
Sistemas para Internet e Software LivreSistemas para Internet e Software Livre
Sistemas para Internet e Software Livre
 

Recently uploaded

Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresaulasgege
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPanandatss1
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxIsabellaGomes58
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
Aula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologia
Aula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologiaAula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologia
Aula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologiaaulasgege
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxBiancaNogueira42
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveaulasgege
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxfabiolalopesmartins1
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxSlides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxLuizHenriquedeAlmeid6
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 

Recently uploaded (20)

Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autores
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SP
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
Aula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologia
Aula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologiaAula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologia
Aula - 1º Ano - Émile Durkheim - Um dos clássicos da sociologia
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptx
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxSlides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 

Otimizando consultas MySQL

  • 1. Melhorando o desempenho de suas consultas no MySQL Como não aborrecer o DBA e ter um bom desempenho em suas consultas.
  • 2. É necessária a otimização? Grande parte da responsabilidade para que o banco de dados funcione bem é de quem modela a base de dados! Uma Base de dados bem modelada é uma base importante para se criar sistemas coesos e robustos! FreeDigitalPhotos.net
  • 3. É necessária a otimização? Mas em alguns sistemas, temos uma modelagem muito particular... Nem sempre temos uma base de dados modelada como sonhamos... FreeDigitalPhotos.net
  • 4. É necessária a otimização? Nestes casos, a otimização deve ser primordial! "Não posso escolher como me sinto, mas posso escolher o que fazer a respeito". William Shakespeare FreeDigitalPhotos.net
  • 5. Entendendo o banco de dados relacional Resumidamente, existem duas maneiras de se trabalhar com um banco de dados relacional... FreeDigitalPhotos.net FreeDigitalPhotos.net Você é livre para escolher qual utilizar! "Não é livre quem não obteve domínio sobre si".Pitágoras
  • 6. Entendendo o banco de dados relacional Banco de dados relacionais são matemáticos. Eles trabalham, resumidamente, com teoria de conjuntos... ● Produto cartesiano ● Cardinalidade FreeDigitalPhotos.net "A matemática é o alfabeto com o qual Deus escreveu o universo". Pitágoras
  • 7. Ferramentas úteis de análise Podemos analisar uma função explícita, utilizando o BENCHMARK. SELECT BENCHMARK(1000000,2+2); O MySQL irá executar um milhão de vezes a expressão, em determinado tempo.
  • 8. Ferramentas úteis de análise Podemos entender melhor o funcionamento de nosso script usando o EXPLAIN. EXPLAIN SELECT * FROM ctbplc; O MySQL retornará um registro contendo uma análise do script.
  • 9. Ferramentas úteis de análise ● Colunas de retorno do EXPLAIN SELECT ○ ID: Número sequencial que identifica as consultas dentro do SELECT. ○ SELECT_TYPE: Tipo de cláuso SQL: ■ SIMPLE (Select simples) ■ PRIMARY (Select mais externa) ■ UNION (segunda select ou select proveniente do UNION) ■ DEPENDENT UNION (segunda select ou select proveniente do UNION) ■ SUBQUERY (primeiro select encadeado - subquery) ■ DEPENDENT SUBQUERY (primeiro select encadeado da subquery) ■ DERIVED (select de tabela derivada - Subquery da cláusula FROM)
  • 10. Ferramentas úteis de análise ● Colunas de retorno do EXPLAIN SELECT ○ TABLE: Tabela do registro de saída. ○ TYPE: Tipo de JOIN: ■ SYSTEM (tabela que só tem uma linha, tabela de sistema) ■ CONST (tabela que tem no máximo uma linha coincidente. São constantes) ■ EQ_REF (todas as partes da chaves são usadas para combinação de registros) ■ REF (idem ao EQ_REF, mas com índices não únicos) ■ REF_OR_NULL (idem ao REF, mas com busca IS NULL) ■ RANGE (faixa de busca quando o campo é comparado a uma constante) ■ INDEX (quando a consulta só usa colunas que são parte de um índice) ■ ALL (varredura completa na tabela para a busca de registros)
  • 11. Ferramentas úteis de análise ● Colunas de retorno do EXPLAIN SELECT ○ POSSIBLE_KEYS: Sugestão de índices a serem utilizados. ○ KEY: Chave que está sendo utilizado na consulta. ○ KEY_LEN: Tamanho da chave do campo KEY. ○ REF: Colunas utilizadas pela chave do campo KEY. ○ ROWS: Quantidade de linhas que será analisada para gerar a consulta.
  • 12. Ferramentas úteis de análise ● Colunas de retorno do EXPLAIN SELECT ○ EXTRA: Sugestão de índices a serem utilizados. ■ Distinct (Termina a busca quando encontra o primeiro registro coincidente) ■ Not exists (idem ao Distinct, mas com LEFT JOIN) ■ Range checked for each record (index map: #) (O MySQL não encontrou um bom índice para usar) ■ Using filesort (Pesquisa extra na tabela para realizar a ordem de classificação) ■ Using index (Recuperação feita apenas com índices) ■ Using temporary (Utilização de tabelas temporárias para realizar a busca) ■ Using where (Tipo de restrição na busca de registros) Detalhes: http://dev.mysql.com/doc/refman/5.1/en/explain-output.html
  • 13. Melhorando a performance ● Dicas importantes para SELECT a que já existem: ○ ANALYZE TABLE: Esta função atualizará as estatísticas sobre a tabela. Tais estatísticas são utilizadas pelo MYSQL para seleção de como e qual índice pode ser utilizado. ● Utilize SHOW INDEX FROM para verificar se a referência de cardinalidade (coluna Cardinality) está atualizada! ● Os campos das chaves utilizadas devem ser do mesmo tipo e tamanho para que as buscas sejam mais rápidas (também influencia no Join).
  • 14. Melhorando a performance ● Dicas importantes para WHERE: ○ ANALYZE TABLE: Esta função atualizará as estatísticas sobre a tabela. Tais estatísticas são utilizadas pelo MYSQL para seleção de como e qual índice pode ser utilizado. ○ Se todas colunas usadas do índice são numéricas, então somente a árvore de índice é usada para resolver a consulta.
  • 15. Melhorando a performance ● Dicas importantes para WHERE: ○ Se você não utiliza colunas de todas tabelas usadas, o MySQL irá parar a varredura das tabelas não usadas logo que encontrar a primeira coincidência. SELECT DISTINCT t1.a FROM t1,t2 WHERE t1.a=t2.a;
  • 16. Melhorando a performance ● Dicas importantes para WHERE: ○ Você está unindo muitas tabelas e as colunas nas quais você está fazendo um ORDER BY não são todas da primeira tabela que não é constante. ○ O ideal é que os campos do ORDER BY sejam da primeira tabela.
  • 17. Melhorando a performance ● Dica importante para WHERE: ○ Tente usar campos no ORDER BY façam parte de índices. Isso evita um processo de ordenação por parte do MySQL. ○ Internamente, o MySQL ordena as consultas GROUP BY como de fosse o ORDER BY. Para que só o agrupamento aconteça, inclua no seu script um ORDER BY NULL;
  • 18. Melhorando a performance ● Dica importante para LIMIT: ○ O MySQL vai buscar a quantidade de registros estipulados no LIMIT e só depois vai executar outras funções (ORDER BY ou GROUP BY, por exemplo).
  • 19. Melhorando a performance ● Dicas importantes para INSERT: ○ Importação de dados: Pode-de utilizar o LOAD DATA INFILE. A velocidade de inserção de registros pode melhorar em até 20x. ZQuery.Close; ZQuery.SQL.Clear; ZQuery.SQL.Text:='LOAD DATA INFILE ''c:ctbplc.csv'' INTO TABLE ctbplc FIELDS TERMINATED BY '','' ENCLOSED BY ''"''LINES TERMINATED BY ''n''ignore 1 lines;'; ZQuery.ExecSQL;
  • 20. Melhorando a performance ● Dicas importantes para INSERT: ○ Na importação de um volume grande de dados, também é válido desabilitar os índices com ALTER TABLE <TABELA> DISABLE/ENABLE KEYS.
  • 21. Melhorando a performance ● Dicas importantes para INSERT: ○ Lotes de inserção: Pode-de utilizar o BEGIN / END / COMMIT para montar um bloco de comandos insert. A vantagem em velocidade se torna interessante com blocos de 1000 registro. ZQuery.Close; ZQuery.SQL.Clear; ZQuery.SQL.Text:='start transaction'; ZQuery.ExecSQL; try //Comandos dos inserts ... ZQuery.Close; ZQuery.SQL.Clear; ZQuery.SQL.Text:='commit'; ZQuery.ExecSQL; except ZQuery.Close; ZQuery.SQL.Clear; ZQuery.SQL.Text:='rollback'; ZQuery.ExecSQL; end;
  • 22. Melhorando a performance ● Dica importante para UPDATE: ○ Deixar para alterar todo o registro de uma só vez.
  • 23. Melhorando a performance ● Dica importante para DELETE: ○ Se for "limpar" uma tabela, use o TRUNCATE TABLE
  • 24. Melhorando a performance ● Dicas importantes: ○ Dentro do possível, dê preferência para a utilização de conexões persistentes. Isso evita sobrecarga de conexões no servidor de banco de dados.
  • 25. Melhorando a performance ● Dicas importantes: ○ Se suas buscas usam uma determinada ordem de campos, mas na tabela esses campos estão em uma ordem diferente, mude a ordem dos campos da tabela com ALTER TABLE... ORDER BY expr1, expr2....
  • 26. Melhorando a performance ● Quebrando alguns paradigmas: ○ Índices com muitos campos podem ser substituidos por um único campo "hash": SELECT * FROM <nome_tabela> WHERE col_hash=MD5(concat (col1,col2)) AND col_1='constante' AND col_2='constante'.
  • 27. Melhorando a performance ● Quebrando alguns paradigmas: ○ Tabelas com muita alteração: evite as colunas varchar e blob. Dê preferência a registros de tamanho fixo.
  • 28. Melhorando a performance ● Quebrando alguns paradigmas: ○ Não tenha vergonha de quebrar, em pontos críticos, a 3ª forma normal. Mais detalhes: http://pt.wikipedia.org/wiki/Banco_de_dados_relacional
  • 29. Entendendo melhor as coisas... ● Como funcionam os índices? FreeDigitalPhotos.net
  • 30. Entendendo melhor as coisas... ● Onde os índices são usados: ○ Para encontrar rapidamente os registros que coincidam com uma cláusula WHERE. ○ Para recuperar registros de outras tabelas ao realizar joins. ○ Para encontrar o valor MAX() ou MIN() para uma coluna indexada especifica. ○ Para ordenar ou agrupar uma tabela.
  • 31. Entendendo melhor as coisas... ● Exemplos: ○ Se a tabela possuir um índice de múltiplas colunas, qualquer prefixo mais à esquerda do índice pode ser usado pelo MySQL para encontrar registros. Por exemplo, se você possui um índice de três colunas em (col1, col2, col3), você tem capacidades de busca indexada em (col1), (col1, col2) e (col1, col2, col3). ○ SELECT col3 FROM <nome_tabela> WHERE col1=1 . ○ SELECT * FROM <nome_tabela> WHERE col1=val1 AND col2=val2 .
  • 32. Entendendo melhor as coisas... ● Exemplos: ○ Se a tabela possuir um índice de múltiplas colunas, qualquer prefixo mais à esquerda do índice pode ser usado pelo MySQL para encontrar registros. Por exemplo, se você possui um índice de três colunas em (col1, col2, col3), você tem capacidades de busca indexada em (col1), (col1, col2) e (col1, col2, col3). ○ SELECT * FROM <nome_tabela> WHERE col1=val1; ○ SELECT * FROM <nome_tabela> WHERE col2=val2; ○ SELECT * FROM <nome_tabela> WHERE col2=val2 AND col3=val3;
  • 33. Entendendo melhor as coisas... ● Exemplos: CREATE TABLE teste ( id INT NOT NULL, ultimo_nome CHAR(30) NOT NULL, primeiro_nome CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX nome (ultimo_nome,primeiro_nome)); ○ SELECT * FROM teste WHERE ultimo_nome="Lopes"; ○ SELECT * FROM teste WHERE ultimo_nome="Lopes" AND primeiro_nome=" Helder"; ○ SELECT * FROM teste WHERE ultimo_nome="Lopes" AND (primeiro_nome=" Helder" OR primeiro_nome="Francisco"); ○ SELECT * FROM teste WHERE ultimo_nome="Lopes" AND primeiro_nome >=" H" AND primeiro_nome < "S"; ○ SELECT * FROM teste WHERE primeiro_nome="Helder"; ○ SELECT * FROM teste WHERE ultimo_nome="Lopes" OR primeiro_nome=" Helder";
  • 34. Entendendo melhor as coisas... ● Exemplos: ○ Um índice é usado para colunas que você compara com os seguintes operadores: =, >, >=, <, <=, BETWEEN, IS NULL ou um LIKE com um padrão que começa com um prefixo sem meta caracteres. ○ SELECT * FROM <nome_tabela> WHERE key_col LIKE "Helder%"; ○ SELECT * FROM <nome_tabela> WHERE key_col LIKE "Hel%_er%" ○ SELECT * FROM <nome_tabela> WHERE key_col LIKE "%Helder%";
  • 35. Entendendo melhor as coisas... ● Cuidado com os AND: ○ Qualquer índice que não cobre todos os níveis de AND na cláusula WHERE não é utilizado para otimizar a consulta.
  • 36. Entendendo melhor as coisas... ● Índices pré-fixados: ○ Para colunas CHAR, VARCHAR, BLOB e TEXT pode- se indexar um prefixo da coluna. ○ Isto é muito mais rápido e necessita de menos espaço em disco do que indexar a coluna inteira. CREATE TABLE teste ( nome CHAR(200) NOT NULL, INDEX nome_indice (nome(10)) );
  • 37. Bibliografia ● Baron Schwartz, Peter Zaitsev, Vadim Tkachenko, Jeremy D. Zawodny, Arjen Lentz, Derek J. Balling. High Performance MySQL: Optimization, Backups, Replication, and More. O'Reilly Media, Inc., 2008; 2ª ed; ISBN 0596554753. ● Wikipédia. Árvore B. http://pt.wikipedia.org/wiki/%C3%81rvore_B Acessado em 18/02/2013.