Velocidade de Consultas com Chave Primária (PK)

20 Dez 2018

Comparação entre consulta por chave primária e sem chave primaria.

A Chave Primária (PK) é importância nas tabelas de DB (banco de dados), facilita nas buscas por registros e evita registros duplicados o qual torna cada registro único, pois o DB não aceita duas PK iguais na mesma tabela. Não irei abordar neste post todos os pontos positivos e negativos da PK, apenas a sua velocidade/desempenho na consulta.  

Sabemos sim que as consultas via chave primária em banco de dados são mais rápidas que em consultas nas demais colunas comuns de uma tabela no DB (banco de dados). Porem já se perguntou o quão rápido é? Qual a velocidade em microssegundos?

Decidi fazer um teste para ver quão rápido é e se essa velocidade faz grande diferença assim em relação as demais colunas comum da mesma tabela.

Neste post mostro o ambiente que realizei os testes e os resultados obtidos.


Ex.: Uma tabela com a coluna
id_ncm (INT, Chave Primária) e uma coluna cod_ncm (INT) com mais de 10.000 registros. Irei chamar a coluna 
id_ncm de ID e a coluna cod_ncm  COD. A consulta pela coluna ID será mais rápida que a coluna COD? E o quanto rápida será em média(%) ?

 

AMBIENTE DE TESTE

Software utilizado para consulta: IDE NetBeans 8.2

Servidor de base de dados:

  • Servidor: MySQL (127.0.0.1 via TCP/IP)
  • Tipo de servidor: MySQL
  • Conexão com o servidor: SSL is not being used Documentação
  • Versão do servidor: 5.7.23 - MySQL Community Server (GPL)
  • Versão do protocolo: 10
  • Conjunto de caracteres do servidor: UTF-8 Unicode (utf8)
  • SGDB: phpMyAdmin versão: 4.8.3 

Servidor web:

  • Apache/2.4.35 (Win64) PHP/7.2.10
  • Versão do cliente de base de dados: libmysql - mysqlnd 5.0.12-dev 
  • versão do PHP: 7.2.10 

Computador:

  • SO: Windows 10 Home Single Language
  • Processador: Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz
  • Memória (RAM): 8,00 GB (utilizável: 7,82 GB)
  • Tipo de sistema: 64 bits, processador com base em x64 

Tabela do DB:

  • Quantidade de registros na tabela de teste: 10.270
  • Linha de Teste: 10.000
  • Coluna COD (cod_ncm): é uma coluna do tipo INT(11)
  • Coluna ID (id_ncm): é uma coluna do tipo INT(11) com Chave Primária

 

Execução dos testes na coluna COD 

SELECT * FROM `ncm` WHERE `cod_ncm` = 91021110

Obs.: o valor 91021110 equivale a linha 10.000 na tabela.

 

Executado com sucesso em 0,033 s.

Extraindo o conjunto de resultados obtido 0,003 s.

Linha 1, coluna 1 

Execução finalizada após 0,047 s, no erros ocorridos.

 

Executado com sucesso em 0,025 s.

Extraindo o conjunto de resultados obtido 0,002 s.

Linha 1, coluna 1 

Execução finalizada após 0,038 s, no errors ocorridos.

  

Executado com sucesso em 0,042 s.

Extraindo o conjunto de resultados obtido 0,004 s.

Linha 1, coluna 1 

Execução finalizada após 0,058 s, no errors ocorridos.

 

Media da coluna COD

Executado com sucesso: 0,033 s

Extraindo o conjunto de resultados obtido: 0,003

Execução finalizada após: 0,047

  

Execução dos testes na coluna ID

SELECT * FROM `ncm` WHERE `id_ncm` = 10000

 

Executado com sucesso em 0,001 s.

Extraindo o conjunto de resultados obtido 0,004 s.

Linha 1, coluna 1 

Execução finalizada após 0,02 s, no erros ocorridos.

 

Executado com sucesso em 0,001 s.

Extraindo o conjunto de resultados obtido 0,004 s.

Linha 1, coluna 1 

Execução finalizada após 0,019 s, no erros ocorridos.

 

Executado com sucesso em 0,001 s.

Extraindo o conjunto de resultados obtido 0,003 s.

Linha 1, coluna 1 

Execução finalizada após 0,018 s, no erros ocorridos.

 

Media da coluna ID

Executado com sucesso: 0,001 s

Extraindo o conjunto de resultados obtido: 0,003

Execução finalizada após: 0,019

 

 Resultados Finais

 Executado com sucesso:

  • COD = 0,033s
  • ID  = 0,001s

 Extraindo o conjunto de resultados obtido:

  • COD = 0,003s
  • ID  = 0,003s

 Execução finalizada após:

  • COD = 0,047s
  • ID  = 0,019s

 

Comparação

Velocidade de execução = ID é 32 vezes mais rápido que o COD ou 320%.

Velocidade Final = ID é 1,47 vezes mais rápido que o COD ou 147,37%.

  

Conclusão

Consultas por Chave Primária são de fato bem mais rápidas. Agora, sabendo o quão rápida é, fica mais fácil você avaliar se deves realizar a consulta via PK ou não.

 

Veja também:


Desculpe, ainda não existem notícias cadastradas. Favor volte mais tarde!

Entrar em Contato

Para entrar em contato preencha o formulário abaixo.

ou

encontre-nos no