"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > A ordem das condições em um MySQL onde a cláusula afeta o desempenho da consulta?

A ordem das condições em um MySQL onde a cláusula afeta o desempenho da consulta?

Postado em 2025-03-23
Navegar:773

Does the Order of Conditions in a MySQL WHERE Clause Impact Query Performance?

Ordem das condições em mysql onde cláusulas e performance

Ao criar consultas de banco de dados complexas com inúmeras condições, a ordem dessas condições pode impactar potencialmente o MYSQL Performance. Um cenário comum envolve uma combinação de condições amplas e restritivas. Surge a pergunta: importa se a condição restritiva aparece primeiro ou pela última vez na cláusula WHERE?

A resposta nem sempre é direta. Em certas situações, a ordem pode afetar o desempenho devido ao comportamento de curto-circuito. Considere as seguintes consultas:

SELECT * FROM clients WHERE 
       (firstname LIKE :foo OR lastname LIKE :foo OR phone LIKE :foo) AND 
       (firstname LIKE :bar OR lastname LIKE :bar OR phone LIKE :bar) AND 
       company = :ugh
SELECT * FROM clients WHERE 
       company = :ugh AND
       (firstname LIKE :foo OR lastname LIKE :foo OR phone LIKE :foo) AND 
       (firstname LIKE :bar OR lastname LIKE :bar OR phone LIKE :bar) 

Na primeira consulta, a condição da empresa é verificada por último, potencialmente fazendo com que o MySQL pesquise em um grande número de linhas antes de diminuir os resultados. Na segunda consulta, a condição da empresa é avaliada primeiro, o que pode reduzir significativamente o número de linhas que precisam ser processadas. Se a condição da empresa falhar para uma determinada linha, o MySQL não continuará a avaliar as condições restantes para essa linha. Não é uma regra geral que possa ser aplicada em todos os casos. É melhor realizar testes de desempenho em consultas específicas para determinar se a reordenação das condições fornece alguma melhoria perceptível.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3