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
Lepaskan: 2025-01-04 12:44:40
asal
766 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan