Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Persimpangan Keadaan Berbilang Baris dengan Cekap dalam SQL?

Bagaimana untuk Mencari Persimpangan Keadaan Berbilang Baris dengan Cekap dalam SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-04 12:44:40780semak imbas

How to Efficiently Find the Intersection of Multiple Row Conditions in SQL?

Menyelesaikan Persilangan "DAN" Melintasi Berbilang Baris dalam SQL

Menyiasat pangkalan data untuk mendapatkan semula data berdasarkan berbilang keadaan adalah tugas biasa. Walau bagaimanapun, apabila syarat perlu digunakan pada berbilang baris, pendekatan boleh menjadi rumit. Artikel ini membentangkan penyelesaian yang lebih cekap untuk senario sedemikian, menghapuskan keperluan untuk sub-pertanyaan.

Pertimbangkan jadual "tag" dengan lajur "tagid" dan "contentid." Untuk mencari "contentid" setiap bahagian kandungan yang ditag dengan tagids 334, 338 dan 342, pendekatan tradisional melibatkan sub-pertanyaan bersarang. Walau bagaimanapun, kaedah ini menjadi kurang cekap apabila bilangan keadaan bertambah.

Pendekatan yang dioptimumkan mengelakkan sub-pertanyaan, menghasilkan prestasi pertanyaan yang lebih pantas dan lebih meluas. Berikut ialah pertanyaan yang disemak:

SELECT contentID
FROM tags
WHERE tagID in (334, 338, 342)
GROUP BY contentID
HAVING COUNT(DISTINCT tagID) = 3

Pertanyaan ini mencapai persimpangan dengan menggunakan operator "IN" dengan senarai tagids. Klausa "GROUP BY" mengumpulkan hasil mengikut "contentID," dan klausa "HAVING" menapis hasil untuk memasukkan hanya kandungan yang mempunyai semua tagid yang ditentukan.

Secara umum, corak ini boleh dilanjutkan untuk mencari persilangan mana-mana bilangan teg:

SELECT contentID
FROM tags
WHERE tagID in (...) --taglist
GROUP BY contentID
HAVING COUNT(DISTINCT tagID) = ... --tagcount

Dengan menggantikan ruang letak "senarai tag" dan "kira teg" dengan yang dikehendaki nilai, pertanyaan ini boleh mencari kandungan yang memenuhi kriteria persimpangan dengan cekap.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Persimpangan Keadaan Berbilang Baris dengan Cekap dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn