Carian Cekap untuk Nilai Dipisahkan Koma dalam Pangkalan Data MySQL
Apabila bekerja dengan jadual data yang mengandungi nilai dipisahkan koma, mencari padanan tertentu boleh menjadi tugas yang mencabar. Dalam kes ini, anda mempunyai dua jadual: pelanggan (mengandungi alamat e-mel) dan imap_email (di mana medan kepada mengandungi alamat e-mel yang dipisahkan koma). Anda perlu mencari dengan cekap dalam jadual imap_emails berdasarkan alamat e-mel daripada jadual pelanggan.
Daripada menggunakan keadaan LIKE, anda boleh memanfaatkan fungsi FIND_IN_SET untuk melakukan carian yang lebih disasarkan. Fungsi ini membolehkan anda menyemak sama ada nilai tertentu ditemui dalam rentetan yang dipisahkan koma.
Penyelesaian:
Pertanyaan berikut menunjukkan cara anda boleh menggunakan FIND_IN_SET untuk cekap mencari:
SELECT * FROM imap_emails INNER JOIN customers ON FIND_IN_SET(customers.email, imap_emails.to) > 0
Pertanyaan ini melakukan cantuman dalaman antara dua jadual, memadankan baris di mana e-mel pelanggan terdapat dalam medan yang dipisahkan koma pada jadual imap_emails. Dengan menggunakan FIND_IN_SET dan bukannya LIKE, anda meningkatkan kecekapan carian dan mengelakkan positif palsu.
Pertimbangan Tambahan:
Dalam soalan anda, anda menyebut bahawa anda tidak boleh menggunakan perhubungan antara meja-meja itu. Walau bagaimanapun, jika anda mempunyai keupayaan untuk mewujudkan perhubungan (mis., menggunakan kunci asing), ia akan meningkatkan integriti data dan prestasi pertanyaan carian anda dengan ketara.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Nilai Dipisahkan Koma dengan Cekap dalam MySQL Tanpa Menggunakan Perhubungan Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!