"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 pesquisar valores separados por vírgula com eficiência no MySQL sem usar relacionamentos de tabela?

Como pesquisar valores separados por vírgula com eficiência no MySQL sem usar relacionamentos de tabela?

Publicado em 2024-12-21
Navegar:102

How to Efficiently Search Comma-Separated Values in MySQL Without Using Table Relationships?

Pesquisa eficiente de valores separados por vírgula no banco de dados MySQL

Ao trabalhar com tabelas de dados que contêm valores separados por vírgula, encontrar correspondências específicas pode ser uma tarefa desafiadora. Nesse caso, você tem duas tabelas: clientes (contendo endereços de e-mail) e imap_emails (onde o campo para contém endereços de e-mail separados por vírgula). Você precisa pesquisar com eficiência na tabela imap_emails com base nos endereços de e-mail da tabela de clientes.

Em vez de usar uma condição LIKE, você pode aproveitar a função FIND_IN_SET para realizar uma pesquisa mais direcionada. Esta função permite verificar se um valor específico foi encontrado em uma string separada por vírgula.

Solução:

A consulta a seguir demonstra como você pode usar FIND_IN_SET para obter resultados eficientes. pesquisando:

SELECT *
FROM imap_emails
INNER JOIN customers
ON FIND_IN_SET(customers.email, imap_emails.to) > 0

Esta consulta executa uma junção interna entre as duas tabelas, correspondendo às linhas onde o e-mail do cliente está presente no campo separado por vírgula da tabela imap_emails. Ao usar FIND_IN_SET em vez de LIKE, você melhora a eficiência da pesquisa e evita falsos positivos.

Considerações adicionais:

Em sua pergunta, você mencionou que não pode usar relacionamentos entre as mesas. No entanto, se você tiver a capacidade de estabelecer um relacionamento (por exemplo, usando chaves estrangeiras), isso melhoraria significativamente a integridade dos dados e o desempenho de suas consultas de pesquisa.

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