SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
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.

Contenu connexe

Tendances

Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenKevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenPostgresOpen
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Practical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresPractical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresEDB
 
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015PostgreSQL-Consulting
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PGConf APAC
 
MongoDB. Фокус на тестирование
MongoDB. Фокус на тестированиеMongoDB. Фокус на тестирование
MongoDB. Фокус на тестированиеUladzimir Kryvenka
 
PostgreSQL_ Up and Running_ A Practical Guide to the Advanced Open Source Dat...
PostgreSQL_ Up and Running_ A Practical Guide to the Advanced Open Source Dat...PostgreSQL_ Up and Running_ A Practical Guide to the Advanced Open Source Dat...
PostgreSQL_ Up and Running_ A Practical Guide to the Advanced Open Source Dat...MinhLeNguyenAnh2
 
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013Jaime Crespo
 
MySQL Performance Schema in 20 Minutes
 MySQL Performance Schema in 20 Minutes MySQL Performance Schema in 20 Minutes
MySQL Performance Schema in 20 MinutesSveta Smirnova
 
Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017
Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017
Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017Amazon Web Services
 
DAT304_Amazon Aurora Performance Optimization with MySQL
DAT304_Amazon Aurora Performance Optimization with MySQLDAT304_Amazon Aurora Performance Optimization with MySQL
DAT304_Amazon Aurora Performance Optimization with MySQLKamal Gupta
 
PostgreSQL Database Slides
PostgreSQL Database SlidesPostgreSQL Database Slides
PostgreSQL Database Slidesmetsarin
 
Working with JSON Data in PostgreSQL vs. MongoDB
Working with JSON Data in PostgreSQL vs. MongoDBWorking with JSON Data in PostgreSQL vs. MongoDB
Working with JSON Data in PostgreSQL vs. MongoDBScaleGrid.io
 
Deep Dive on Amazon Aurora MySQL Performance Tuning (DAT429-R1) - AWS re:Inve...
Deep Dive on Amazon Aurora MySQL Performance Tuning (DAT429-R1) - AWS re:Inve...Deep Dive on Amazon Aurora MySQL Performance Tuning (DAT429-R1) - AWS re:Inve...
Deep Dive on Amazon Aurora MySQL Performance Tuning (DAT429-R1) - AWS re:Inve...Amazon Web Services
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQLJoel Brewer
 
Advanced MySQL Query Tuning
Advanced MySQL Query TuningAdvanced MySQL Query Tuning
Advanced MySQL Query TuningAlexander Rubin
 
MySQL Query And Index Tuning
MySQL Query And Index TuningMySQL Query And Index Tuning
MySQL Query And Index TuningManikanda kumar
 

Tendances (20)

Programação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a ObjetosProgramação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a Objetos
 
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenKevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Practical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresPractical Partitioning in Production with Postgres
Practical Partitioning in Production with Postgres
 
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs
 
MongoDB. Фокус на тестирование
MongoDB. Фокус на тестированиеMongoDB. Фокус на тестирование
MongoDB. Фокус на тестирование
 
PostgreSQL_ Up and Running_ A Practical Guide to the Advanced Open Source Dat...
PostgreSQL_ Up and Running_ A Practical Guide to the Advanced Open Source Dat...PostgreSQL_ Up and Running_ A Practical Guide to the Advanced Open Source Dat...
PostgreSQL_ Up and Running_ A Practical Guide to the Advanced Open Source Dat...
 
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
 
MySQL Performance Schema in 20 Minutes
 MySQL Performance Schema in 20 Minutes MySQL Performance Schema in 20 Minutes
MySQL Performance Schema in 20 Minutes
 
Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017
Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017
Best Practices for Running PostgreSQL on AWS - DAT314 - re:Invent 2017
 
Algoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetiçãoAlgoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetição
 
Bancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geralBancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geral
 
DAT304_Amazon Aurora Performance Optimization with MySQL
DAT304_Amazon Aurora Performance Optimization with MySQLDAT304_Amazon Aurora Performance Optimization with MySQL
DAT304_Amazon Aurora Performance Optimization with MySQL
 
PostgreSQL Database Slides
PostgreSQL Database SlidesPostgreSQL Database Slides
PostgreSQL Database Slides
 
Working with JSON Data in PostgreSQL vs. MongoDB
Working with JSON Data in PostgreSQL vs. MongoDBWorking with JSON Data in PostgreSQL vs. MongoDB
Working with JSON Data in PostgreSQL vs. MongoDB
 
Deep Dive on Amazon Aurora MySQL Performance Tuning (DAT429-R1) - AWS re:Inve...
Deep Dive on Amazon Aurora MySQL Performance Tuning (DAT429-R1) - AWS re:Inve...Deep Dive on Amazon Aurora MySQL Performance Tuning (DAT429-R1) - AWS re:Inve...
Deep Dive on Amazon Aurora MySQL Performance Tuning (DAT429-R1) - AWS re:Inve...
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQL
 
Advanced MySQL Query Tuning
Advanced MySQL Query TuningAdvanced MySQL Query Tuning
Advanced MySQL Query Tuning
 
MySQL Query And Index Tuning
MySQL Query And Index TuningMySQL Query And Index Tuning
MySQL Query And Index Tuning
 

En vedette

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
 

En vedette (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
 

Similaire à 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
 

Similaire à 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
 
Aula 06 - TEP - Introdução SQLite
Aula 06 - TEP - Introdução SQLiteAula 06 - TEP - Introdução SQLite
Aula 06 - TEP - Introdução SQLite
 
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)
 

Plus de 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
 

Plus de 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
 

Dernier

Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTailsonSantos1
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAHELENO FAVACHO
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxedelon1
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasSocorro Machado
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfHELENO FAVACHO
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfLuizaAbaAba
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfHELENO FAVACHO
 

Dernier (20)

Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdf
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 

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.