SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler 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.

Mais conteúdo relacionado

Mais procurados

Optimizing MySQL Queries
Optimizing MySQL QueriesOptimizing MySQL Queries
Optimizing MySQL QueriesAchievers Tech
 
Mysql Explain Explained
Mysql Explain ExplainedMysql Explain Explained
Mysql Explain ExplainedJeremy Coates
 
The MySQL Query Optimizer Explained Through Optimizer Trace
The MySQL Query Optimizer Explained Through Optimizer TraceThe MySQL Query Optimizer Explained Through Optimizer Trace
The MySQL Query Optimizer Explained Through Optimizer Traceoysteing
 
MySQL Query And Index Tuning
MySQL Query And Index TuningMySQL Query And Index Tuning
MySQL Query And Index TuningManikanda kumar
 
ClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei MilovidovClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei MilovidovAltinity Ltd
 
PostgreSQL Performance Tuning
PostgreSQL Performance TuningPostgreSQL Performance Tuning
PostgreSQL Performance Tuningelliando dias
 
A Fast Intro to Fast Query with ClickHouse, by Robert Hodges
A Fast Intro to Fast Query with ClickHouse, by Robert HodgesA Fast Intro to Fast Query with ClickHouse, by Robert Hodges
A Fast Intro to Fast Query with ClickHouse, by Robert HodgesAltinity Ltd
 
MySQL Index Cookbook
MySQL Index CookbookMySQL Index Cookbook
MySQL Index CookbookMYXPLAIN
 
MySQL 8.0 EXPLAIN ANALYZE
MySQL 8.0 EXPLAIN ANALYZEMySQL 8.0 EXPLAIN ANALYZE
MySQL 8.0 EXPLAIN ANALYZENorvald Ryeng
 
MySQL Indexing : Improving Query Performance Using Index (Covering Index)
MySQL Indexing : Improving Query Performance Using Index (Covering Index)MySQL Indexing : Improving Query Performance Using Index (Covering Index)
MySQL Indexing : Improving Query Performance Using Index (Covering Index)Hemant Kumar Singh
 
MySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveMySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveSveta Smirnova
 
Tối ưu-cau-lệnh-oracle-sql
Tối ưu-cau-lệnh-oracle-sqlTối ưu-cau-lệnh-oracle-sql
Tối ưu-cau-lệnh-oracle-sqlViet Tran
 
Mysql creating stored function
Mysql  creating stored function Mysql  creating stored function
Mysql creating stored function Prof.Nilesh Magar
 
More mastering the art of indexing
More mastering the art of indexingMore mastering the art of indexing
More mastering the art of indexingYoshinori Matsunobu
 
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdfDeep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdfAltinity Ltd
 
Bootcamp sql fundamental
Bootcamp sql fundamentalBootcamp sql fundamental
Bootcamp sql fundamentalvarunbhatt23
 
SQL Server Tuning to Improve Database Performance
SQL Server Tuning to Improve Database PerformanceSQL Server Tuning to Improve Database Performance
SQL Server Tuning to Improve Database PerformanceMark Ginnebaugh
 

Mais procurados (20)

Optimizing MySQL Queries
Optimizing MySQL QueriesOptimizing MySQL Queries
Optimizing MySQL Queries
 
Mysql Explain Explained
Mysql Explain ExplainedMysql Explain Explained
Mysql Explain Explained
 
The MySQL Query Optimizer Explained Through Optimizer Trace
The MySQL Query Optimizer Explained Through Optimizer TraceThe MySQL Query Optimizer Explained Through Optimizer Trace
The MySQL Query Optimizer Explained Through Optimizer Trace
 
MySQL Query And Index Tuning
MySQL Query And Index TuningMySQL Query And Index Tuning
MySQL Query And Index Tuning
 
How to Design Indexes, Really
How to Design Indexes, ReallyHow to Design Indexes, Really
How to Design Indexes, Really
 
ClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei MilovidovClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei Milovidov
 
PostgreSQL Performance Tuning
PostgreSQL Performance TuningPostgreSQL Performance Tuning
PostgreSQL Performance Tuning
 
A Fast Intro to Fast Query with ClickHouse, by Robert Hodges
A Fast Intro to Fast Query with ClickHouse, by Robert HodgesA Fast Intro to Fast Query with ClickHouse, by Robert Hodges
A Fast Intro to Fast Query with ClickHouse, by Robert Hodges
 
MySQL Index Cookbook
MySQL Index CookbookMySQL Index Cookbook
MySQL Index Cookbook
 
MySQL 8.0 EXPLAIN ANALYZE
MySQL 8.0 EXPLAIN ANALYZEMySQL 8.0 EXPLAIN ANALYZE
MySQL 8.0 EXPLAIN ANALYZE
 
MySQL Indexing : Improving Query Performance Using Index (Covering Index)
MySQL Indexing : Improving Query Performance Using Index (Covering Index)MySQL Indexing : Improving Query Performance Using Index (Covering Index)
MySQL Indexing : Improving Query Performance Using Index (Covering Index)
 
MySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveMySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to Have
 
Tối ưu-cau-lệnh-oracle-sql
Tối ưu-cau-lệnh-oracle-sqlTối ưu-cau-lệnh-oracle-sql
Tối ưu-cau-lệnh-oracle-sql
 
Vistas (1)
Vistas (1)Vistas (1)
Vistas (1)
 
PostgreSQL: Advanced indexing
PostgreSQL: Advanced indexingPostgreSQL: Advanced indexing
PostgreSQL: Advanced indexing
 
Mysql creating stored function
Mysql  creating stored function Mysql  creating stored function
Mysql creating stored function
 
More mastering the art of indexing
More mastering the art of indexingMore mastering the art of indexing
More mastering the art of indexing
 
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdfDeep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
 
Bootcamp sql fundamental
Bootcamp sql fundamentalBootcamp sql fundamental
Bootcamp sql fundamental
 
SQL Server Tuning to Improve Database Performance
SQL Server Tuning to Improve Database PerformanceSQL Server Tuning to Improve Database Performance
SQL Server Tuning to Improve Database Performance
 

Destaque

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
 

Destaque (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
 

Semelhante a Melhorando o desempenho de suas consultas no 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
 

Semelhante a Melhorando o desempenho de suas consultas no 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)
 

Mais 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
 

Mais 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
 

Último

Descrever e planear atividades imersivas estruturadamente
Descrever e planear atividades imersivas estruturadamenteDescrever e planear atividades imersivas estruturadamente
Descrever e planear atividades imersivas estruturadamenteLeonel Morgado
 
O que é, de facto, a Educação de Infância
O que é, de facto, a Educação de InfânciaO que é, de facto, a Educação de Infância
O que é, de facto, a Educação de InfânciaHenrique Santos
 
ufcd_9649_Educação Inclusiva e Necessidades Educativas Especificas_índice.pdf
ufcd_9649_Educação Inclusiva e Necessidades Educativas Especificas_índice.pdfufcd_9649_Educação Inclusiva e Necessidades Educativas Especificas_índice.pdf
ufcd_9649_Educação Inclusiva e Necessidades Educativas Especificas_índice.pdfManuais Formação
 
Multiplicação - Caça-número
Multiplicação - Caça-número Multiplicação - Caça-número
Multiplicação - Caça-número Mary Alvarenga
 
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptxEBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptxIlda Bicacro
 
"Nós Propomos! Escola Secundária em Pedrógão Grande"
"Nós Propomos! Escola Secundária em Pedrógão Grande""Nós Propomos! Escola Secundária em Pedrógão Grande"
"Nós Propomos! Escola Secundária em Pedrógão Grande"Ilda Bicacro
 
o-homem-que-calculava-malba-tahan-1_123516.pdf
o-homem-que-calculava-malba-tahan-1_123516.pdfo-homem-que-calculava-malba-tahan-1_123516.pdf
o-homem-que-calculava-malba-tahan-1_123516.pdfCarolineNunes80
 
ROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdf
ROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdfROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdf
ROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdfMarcianaClaudioClaud
 
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdfAparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdfAbdLuxemBourg
 
Alemanha vs União Soviética - Livro de Adolf Hitler
Alemanha vs União Soviética - Livro de Adolf HitlerAlemanha vs União Soviética - Livro de Adolf Hitler
Alemanha vs União Soviética - Livro de Adolf Hitlerhabiwo1978
 
bem estar animal em proteção integrada componente animal
bem estar animal em proteção integrada componente animalbem estar animal em proteção integrada componente animal
bem estar animal em proteção integrada componente animalcarlamgalves5
 
As Mil Palavras Mais Usadas No Inglês (Robert de Aquino) (Z-Library).pdf
As Mil Palavras Mais Usadas No Inglês (Robert de Aquino) (Z-Library).pdfAs Mil Palavras Mais Usadas No Inglês (Robert de Aquino) (Z-Library).pdf
As Mil Palavras Mais Usadas No Inglês (Robert de Aquino) (Z-Library).pdfcarloseduardogonalve36
 
Conteúdo sobre a formação e expansão persa
Conteúdo sobre a formação e expansão persaConteúdo sobre a formação e expansão persa
Conteúdo sobre a formação e expansão persafelipescherner
 
Semana Interna de Prevenção de Acidentes SIPAT/2024
Semana Interna de Prevenção de Acidentes SIPAT/2024Semana Interna de Prevenção de Acidentes SIPAT/2024
Semana Interna de Prevenção de Acidentes SIPAT/2024Rosana Andrea Miranda
 
O Reizinho Autista.pdf - livro maravilhoso
O Reizinho Autista.pdf - livro maravilhosoO Reizinho Autista.pdf - livro maravilhoso
O Reizinho Autista.pdf - livro maravilhosoVALMIRARIBEIRO1
 
Unidade 4 (Texto poético) (Teste sem correção) (2).docx
Unidade 4 (Texto poético) (Teste sem correção) (2).docxUnidade 4 (Texto poético) (Teste sem correção) (2).docx
Unidade 4 (Texto poético) (Teste sem correção) (2).docxRaquelMartins389880
 
livro para educação infantil conceitos sensorial
livro para educação infantil conceitos sensoriallivro para educação infantil conceitos sensorial
livro para educação infantil conceitos sensorialNeuroppIsnayaLciaMar
 
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdfaulasgege
 
Slides Lição 8, Betel, Ordenança para confessar os pecados e perdoar as ofens...
Slides Lição 8, Betel, Ordenança para confessar os pecados e perdoar as ofens...Slides Lição 8, Betel, Ordenança para confessar os pecados e perdoar as ofens...
Slides Lição 8, Betel, Ordenança para confessar os pecados e perdoar as ofens...LuizHenriquedeAlmeid6
 
ATIVIDADE 2 - GQ - COMUNICAÇÃO EMPRESARIAL E NEGOCIAÇÃO - 52_2024
ATIVIDADE 2 - GQ - COMUNICAÇÃO EMPRESARIAL E NEGOCIAÇÃO - 52_2024ATIVIDADE 2 - GQ - COMUNICAÇÃO EMPRESARIAL E NEGOCIAÇÃO - 52_2024
ATIVIDADE 2 - GQ - COMUNICAÇÃO EMPRESARIAL E NEGOCIAÇÃO - 52_2024azulassessoria9
 

Último (20)

Descrever e planear atividades imersivas estruturadamente
Descrever e planear atividades imersivas estruturadamenteDescrever e planear atividades imersivas estruturadamente
Descrever e planear atividades imersivas estruturadamente
 
O que é, de facto, a Educação de Infância
O que é, de facto, a Educação de InfânciaO que é, de facto, a Educação de Infância
O que é, de facto, a Educação de Infância
 
ufcd_9649_Educação Inclusiva e Necessidades Educativas Especificas_índice.pdf
ufcd_9649_Educação Inclusiva e Necessidades Educativas Especificas_índice.pdfufcd_9649_Educação Inclusiva e Necessidades Educativas Especificas_índice.pdf
ufcd_9649_Educação Inclusiva e Necessidades Educativas Especificas_índice.pdf
 
Multiplicação - Caça-número
Multiplicação - Caça-número Multiplicação - Caça-número
Multiplicação - Caça-número
 
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptxEBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
 
"Nós Propomos! Escola Secundária em Pedrógão Grande"
"Nós Propomos! Escola Secundária em Pedrógão Grande""Nós Propomos! Escola Secundária em Pedrógão Grande"
"Nós Propomos! Escola Secundária em Pedrógão Grande"
 
o-homem-que-calculava-malba-tahan-1_123516.pdf
o-homem-que-calculava-malba-tahan-1_123516.pdfo-homem-que-calculava-malba-tahan-1_123516.pdf
o-homem-que-calculava-malba-tahan-1_123516.pdf
 
ROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdf
ROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdfROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdf
ROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdf
 
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdfAparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
 
Alemanha vs União Soviética - Livro de Adolf Hitler
Alemanha vs União Soviética - Livro de Adolf HitlerAlemanha vs União Soviética - Livro de Adolf Hitler
Alemanha vs União Soviética - Livro de Adolf Hitler
 
bem estar animal em proteção integrada componente animal
bem estar animal em proteção integrada componente animalbem estar animal em proteção integrada componente animal
bem estar animal em proteção integrada componente animal
 
As Mil Palavras Mais Usadas No Inglês (Robert de Aquino) (Z-Library).pdf
As Mil Palavras Mais Usadas No Inglês (Robert de Aquino) (Z-Library).pdfAs Mil Palavras Mais Usadas No Inglês (Robert de Aquino) (Z-Library).pdf
As Mil Palavras Mais Usadas No Inglês (Robert de Aquino) (Z-Library).pdf
 
Conteúdo sobre a formação e expansão persa
Conteúdo sobre a formação e expansão persaConteúdo sobre a formação e expansão persa
Conteúdo sobre a formação e expansão persa
 
Semana Interna de Prevenção de Acidentes SIPAT/2024
Semana Interna de Prevenção de Acidentes SIPAT/2024Semana Interna de Prevenção de Acidentes SIPAT/2024
Semana Interna de Prevenção de Acidentes SIPAT/2024
 
O Reizinho Autista.pdf - livro maravilhoso
O Reizinho Autista.pdf - livro maravilhosoO Reizinho Autista.pdf - livro maravilhoso
O Reizinho Autista.pdf - livro maravilhoso
 
Unidade 4 (Texto poético) (Teste sem correção) (2).docx
Unidade 4 (Texto poético) (Teste sem correção) (2).docxUnidade 4 (Texto poético) (Teste sem correção) (2).docx
Unidade 4 (Texto poético) (Teste sem correção) (2).docx
 
livro para educação infantil conceitos sensorial
livro para educação infantil conceitos sensoriallivro para educação infantil conceitos sensorial
livro para educação infantil conceitos sensorial
 
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
 
Slides Lição 8, Betel, Ordenança para confessar os pecados e perdoar as ofens...
Slides Lição 8, Betel, Ordenança para confessar os pecados e perdoar as ofens...Slides Lição 8, Betel, Ordenança para confessar os pecados e perdoar as ofens...
Slides Lição 8, Betel, Ordenança para confessar os pecados e perdoar as ofens...
 
ATIVIDADE 2 - GQ - COMUNICAÇÃO EMPRESARIAL E NEGOCIAÇÃO - 52_2024
ATIVIDADE 2 - GQ - COMUNICAÇÃO EMPRESARIAL E NEGOCIAÇÃO - 52_2024ATIVIDADE 2 - GQ - COMUNICAÇÃO EMPRESARIAL E NEGOCIAÇÃO - 52_2024
ATIVIDADE 2 - GQ - COMUNICAÇÃO EMPRESARIAL E NEGOCIAÇÃO - 52_2024
 

Melhorando o desempenho de suas consultas no 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.