Bagaimanakah Saya Boleh Jadikan Fungsi FIND_IN_SET MySQL Menggunakan Indeks?

DDD
Lepaskan: 2024-11-07 16:50:03
asal
983 orang telah melayarinya

How Can I Make MySQL's FIND_IN_SET Function Utilize Indices?

Bolehkah MySQL FIND_IN_SET Dibuat untuk Menggunakan Indeks?

Fungsi FIND_IN_SET MySQL terkenal kerana tidak menggunakan indeks, mengakibatkan pertanyaan yang tidak cekap. Walau bagaimanapun, terdapat pendekatan alternatif untuk mencapai gelagat pengindeksan yang diingini apabila berurusan dengan senarai yang dipisahkan koma.

Pendekatan Julat

Teknik yang diterangkan dalam jawapan yang disediakan mencadangkan penggunaan pernyataan yang disediakan dengan parameter menerima rentetan dalam bentuk senarai yang dipisahkan koma. Dengan menggunakan jenis julat dengan kunci bukan NULL dalam pernyataan yang disediakan, ia memastikan bahawa indeks akan digunakan apabila melaksanakan klausa IN.

Sebagai contoh, pertanyaan berikut melakukan carian julat dengan indeks pada Lajur 'id':

explain 
select * from ratings where id in (2331425, 430364, 4557546, 2696638, 4510549, ...)
Salin selepas log masuk

Langkah Berjaga-jaga dan Kaveat

Walaupun pendekatan ini membenarkan pertanyaan terindeks yang cekap, adalah penting untuk mempertimbangkan langkah berjaga-jaga berikut:

  • Serangan Suntikan SQL: Menggunakan data yang dibekalkan pengguna dalam prosedur tersimpan boleh membuka jalan untuk serangan suntikan SQL. Pembersihan yang betul adalah penting untuk mengelakkan pelaksanaan kod berniat jahat.
  • Imbasan jadual: Jika lajur yang digunakan untuk carian julat tidak diindeks atau mempunyai nilai bukan nol, ia boleh mengakibatkan imbasan jadual yang digeruni , yang sangat tidak cekap untuk set data yang besar.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Jadikan Fungsi FIND_IN_SET MySQL 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
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!