Bolehkah FIND_IN_SET MySQL atau Fungsi Setara Menggunakan Indeks?

Patricia Arquette
Lepaskan: 2024-11-05 21:22:02
asal
133 orang telah melayarinya

Can MySQL's FIND_IN_SET or an Equivalent Function Utilize Indices?

Bolehkah MySQL FIND_IN_SET atau Setara Menggunakan Indeks?

Pertanyaan SELECT * FROM Foo WHERE FIND_IN_SET(id, '2,3') tidak mengambil kesempatan daripada indeks kunci utama. Ini terbukti apabila membandingkan output EXPLAINnya dengan output untuk SELECT * FROM Foo WHERE id IN (2,3) yang menggunakan indeks.

Objektif: Membina prosedur tersimpan yang berkelakuan seperti pertanyaan kedua, menggunakan indeks tanpa pengetahuan sebelumnya tentang rentetan dipisahkan koma yang mengandungi ID.

Penyelesaian:

Buat pernyataan yang disediakan yang menerima rentetan sebagai parameter:

CREATE PROCEDURE my_sp(@id_string NCHAR(1000))
Salin selepas log masuk

Pernyataan yang disediakan kemudiannya boleh dilaksanakan dengan rentetan dipisahkan koma sebagai hujah:

EXEC my_sp '2,3'
Salin selepas log masuk

Pendekatan ini mencapai syarat yang diingini berikut:

  • jenis ialah julat (bukan SEMUA)
  • kunci bukan NULL

Syarat ini menunjukkan bahawa indeks sedang digunakan.

Pertimbangan Keselamatan:

Penyata yang disediakan mengurangkan risiko serangan suntikan SQL. Walau bagaimanapun, adalah penting untuk memastikan data yang dibekalkan pengguna dibersihkan untuk mengelakkan serangan suntikan SQL peringkat ke-2.

Atas ialah kandungan terperinci Bolehkah FIND_IN_SET MySQL atau Fungsi Setara Menggunakan Indeks?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!