"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 > Como posso fazer com que a função FIND_IN_SET do MySQL utilize índices?

Como posso fazer com que a função FIND_IN_SET do MySQL utilize índices?

Publicado em 2024-11-12
Navegar:830

How Can I Make MySQL's FIND_IN_SET Function Utilize Indices?

O MySQL FIND_IN_SET pode ser feito para usar índices?

A função FIND_IN_SET do MySQL é famosa por não utilizar índices, resultando em consultas ineficientes. No entanto, existem abordagens alternativas para alcançar o comportamento de indexação desejado ao lidar com listas separadas por vírgula.

A abordagem de intervalo

A técnica descrita na resposta fornecida sugere o uso de uma instrução preparada com um parâmetro aceitar uma string na forma de uma lista separada por vírgulas. Ao usar o tipo de intervalo com uma chave não NULL na instrução preparada, ele garante que os índices serão empregados ao executar a cláusula IN.

Por exemplo, a consulta a seguir executa uma pesquisa de intervalo com um índice no Coluna 'id':

explain 
select * from ratings where id in (2331425, 430364, 4557546, 2696638, 4510549, ...)

Precauções e advertências

Embora essa abordagem permita consultas indexadas eficientes, é crucial considere as seguintes precauções:

  • Ataques de injeção de SQL: O uso de dados fornecidos pelo usuário em procedimentos armazenados pode abrir caminhos para ataques de injeção de SQL. A higienização adequada é essencial para evitar a execução de código malicioso.
  • Tablescans: Se a coluna usada para a pesquisa de intervalo não estiver indexada ou tiver valores não nulos, isso pode resultar em uma temida varredura de tabela , o que é altamente ineficiente para grandes conjuntos de dados.
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