Bolehkah MySQL FIND_IN_SET Memanfaatkan Indeks dengan Penyata Disediakan?

Mary-Kate Olsen
Lepaskan: 2024-11-07 00:14:02
asal
217 orang telah melayarinya

Can MySQL FIND_IN_SET Leverage Indices with Prepared Statements?

Bolehkah MySQL FIND_IN_SET Menggunakan Indeks?

Dalam bidang pengoptimuman pangkalan data, indeks memainkan peranan penting dalam meningkatkan prestasi pertanyaan. Walau bagaimanapun, FIND_IN_SET, fungsi yang biasa digunakan untuk mencari nilai dalam rentetan yang dipisahkan koma, telah diketahui memintas penggunaan indeks, menghasilkan prestasi yang lebih perlahan.

Mencapai Pertanyaan Berindeks dengan Parameter Rentetan

Walaupun terdapat pengehadan yang dirasakan, adalah mungkin untuk mencapai pertanyaan diindeks walaupun semasa berurusan dengan rentetan yang dipisahkan koma. Dengan menggunakan pernyataan yang disediakan yang menerima rentetan sebagai parameter, kami boleh menggunakan indeks secara dinamik untuk meningkatkan kecekapan pertanyaan.

Mencipta Penyata Disediakan

CREATE PROCEDURE my_procedure(IN csv_str VARCHAR(255))
BEGIN
  SET @csv_list = CONCAT('(', csv_str, ')');
  SELECT * FROM users WHERE id IN @csv_list;
END
Salin selepas log masuk

Dalam prosedur tersimpan ini, parameter input csv_str berfungsi sebagai sumber untuk rentetan yang dipisahkan koma. Kami membina klausa IN secara dinamik menggunakan penggabungan dan menetapkannya kepada pembolehubah sesi @csv_list.

Melaksanakan Pernyataan Disediakan

Untuk melaksanakan pernyataan yang disediakan dengan koma- rentetan yang dipisahkan, anda akan menggunakan sintaks berikut:

CALL my_procedure('1,2,3');
Salin selepas log masuk

Mengoptimumkan Pertanyaan

Pernyataan yang disediakan, setelah dilaksanakan, mencetuskan pengoptimum untuk menganalisis pertanyaan dan menggunakan indeks pada lajur id. Penggunaan indeks ini jelas dalam output EXPLAIN, memastikan pelaksanaan pertanyaan yang cekap.

Kesimpulan

Walaupun FIND_IN_SET sahaja tidak semestinya menggunakan indeks, menggunakan pernyataan yang disediakan dengan rentetan parameter membolehkan kami mencapai pertanyaan terindeks. Teknik ini memintas kelemahan prestasi yang dikaitkan dengan FIND_IN_SET dan menyediakan masa pelaksanaan pertanyaan yang optimum.

Atas ialah kandungan terperinci Bolehkah MySQL FIND_IN_SET Memanfaatkan Indeks dengan Penyata Disediakan?. 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