Bolehkah Anda Menggunakan Indeks dengan MySQL FIND_IN_SET?

Linda Hamilton
Lepaskan: 2024-11-07 22:07:03
asal
570 orang telah melayarinya

Can You Use Indices with MySQL FIND_IN_SET?

Mengeksploitasi Indeks dengan MySQL FIND_IN_SET atau Setara

Apabila menggunakan FIND_IN_SET dalam MySQL, adalah penting untuk mengenali batasannya dalam menggunakan indeks. Berbeza dengan id yang setara dalam binaan (a, b) mendedahkan bahawa FIND_IN_SET mempamerkan jenis "SEMUA" dan tidak mempunyai kunci yang ditentukan, menyebabkan prestasi tidak cekap apabila indeks tersedia.

Mengatasi Had

Walaupun tidak boleh menggunakan indeks FIND_IN_SET secara langsung, terdapat penyelesaian alternatif untuk menggunakan indeks dalam konteks yang serupa. Ini melibatkan mencipta pernyataan yang disediakan yang menerima rentetan yang dipisahkan koma sebagai parameter.

Contoh Penyata Disediakan

Pertimbangkan pernyataan yang disediakan berikut:

CREATE PROCEDURE get_data(IN comma_separated_ids TEXT)
BEGIN
  SELECT * FROM Foo WHERE id IN (comma_separated_ids);
END;
Salin selepas log masuk

Pernyataan yang disediakan ini boleh dipanggil dengan rentetan ID yang dipisahkan koma sebagai hujah. MySQL akan mengendalikan penukaran secara automatik dan melakukan pertanyaan yang dioptimumkan menggunakan indeks (jika tersedia).

Penjelasan Pengoptimuman

Binaan id IN (a, b, c) diiktiraf oleh pengoptimum MySQL sebagai syarat kesamaan pada lajur kunci utama (id). Memandangkan lajur id diindeks, pengoptimum boleh menggunakan indeks untuk mendapatkan semula baris yang sepadan dengan cekap, menghasilkan jenis "julat" yang diingini dan penggunaan kunci yang cekap.

Mencegah Serangan Suntikan SQL

Adalah penting untuk ambil perhatian bahawa menghantar data yang dibekalkan pengguna melalui pernyataan yang disediakan ialah amalan yang disyorkan untuk mencegah serangan suntikan SQL. Pangkalan data boleh mengendalikan penukaran rentetan dengan selamat dan menghalang input berniat jahat daripada menjejaskan pelaksanaan pertanyaan.

Kesimpulan

Walaupun FIND_IN_SET tidak sesuai langsung untuk menggunakan indeks, penyelesaian yang disediakan membolehkan anda mencapai fungsi yang sama sambil memanfaatkan indeks untuk prestasi optimum. Dengan mengikuti langkah-langkah yang diterangkan, anda boleh membuat pernyataan yang disediakan yang menggunakan indeks dengan berkesan, meningkatkan kelajuan pertanyaan dan mengekalkan integriti data.

Atas ialah kandungan terperinci Bolehkah Anda Menggunakan Indeks dengan MySQL FIND_IN_SET?. 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