Эффективный поиск значений, разделенных запятыми, в базе данных MySQL.
При работе с таблицами данных, содержащими значения, разделенные запятыми, поиск определенных совпадений может быть сложной задачей. В данном случае у вас есть две таблицы: customer (содержащая адреса электронной почты) и imap_emails (где поле to содержит адреса электронной почты, разделенные запятыми). Вам необходимо эффективно выполнять поиск в таблице imap_emails на основе адресов электронной почты из таблицы клиентов.
Вместо использования условия LIKE вы можете использовать функцию FIND_IN_SET для выполнения более целенаправленного поиска. Эта функция позволяет вам проверить, найдено ли определенное значение в строке, разделенной запятыми.
Решение:
Следующий запрос демонстрирует, как вы можете использовать FIND_IN_SET для эффективного поиск:
SELECT * FROM imap_emails INNER JOIN customers ON FIND_IN_SET(customers.email, imap_emails.to) > 0
Этот запрос выполняет внутреннее соединение между двумя таблицами, сопоставляя строки, в которых адрес электронной почты клиента присутствует в поле to, разделенном запятыми, таблицы imap_emails. Используя FIND_IN_SET вместо LIKE, вы повышаете эффективность поиска и избегаете ложных срабатываний.
Дополнительные соображения:
В своем вопросе вы упомянули, что нельзя использовать отношения между столы. Однако если у вас есть возможность установить связь (например, с помощью внешних ключей), это значительно повысит целостность данных и производительность ваших поисковых запросов.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3