Jump to content


Photo

Dúvida Sobre Desempenho Sql


  • Faça o login para participar
3 replies to this topic

#1 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 15/02/2009, 20:26

Boa noite pessoal.
Bom, montei uma consulta aqui, para um sistema meu, e descobri duas formas de fazer. Ambas me retornam o mesmo resultado.

Queria saber, de alguém com experiência em SQL (MySQL), qual das formas é mais rápida de ser executada. Pois preciso de um bom desempenho nesta área do sistema.

Forma 1:
SELECT C.charId, C.char_name, I.* FROM characters C JOIN items I ON C.charId = I.owner_id AND C.charId = 268481993 ORDER BY I.item_id


Forma 2:
SELECT characters.charId, characters.char_name, items.* FROM characters, items WHERE characters.charId = items.owner_id AND characters.charId = 268481993;

Ou será que ambas me retornarão o mesmo desempenho?
Obrigado pela atenção.

Até mais ^_^

Edição feita por: Dudu, 15/02/2009, 20:29.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 22/02/2009, 11:34

Até onde sei, ambas as queries teram o mesmo plano de execução.

Use EXPLAIN para verificar tal coisa.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#3 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 25/02/2009, 15:07

Só complementando...
Tive a mesma dúvida um tempo atrás e fui fazer uma bateria de testes, pois eu acreditava que o JOIN era mais rápido.

Olhando o EXPLAIN, cheguei a conclusão que o query analizer dá uma força e "otimiza" a query antes de executar.
Assim sendo, o desempenho deve ser o mesmo!

Já vi caras nos fóruns por aí dizendo que existe diferença no uso de índices... por outro lado, não vi nenhum que comprovasse isso.
Eu mesmo nunca percebi diferença nos testes que fiz.

#4 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 28/02/2009, 14:06

Sim.

Instalei aqui um programa que ajuda na manutenção do MySQL, chama-se SQLYog.
Muito bom ele.

Ele tem um recurso que permite ver em quantos ms a query foi executada.
Concluí que o tempo varia muito pouco. Depende também da conexão, etc.

Testei em localhost, e testei em uma conexão remota.

Obrigado pela ajuda pessoal.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap





0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq