Bagaimanakah saya boleh bertanya dengan cekap jadual MySQL dengan medan tatasusunan bersiri untuk mencari rekod yang mengandungi item tertentu?

DDD
Lepaskan: 2024-11-08 16:06:02
asal
822 orang telah melayarinya

How can I efficiently query a MySQL table with a serialized array field to find records containing a specific item?

Mengambil Data daripada Tatasusunan Bersiri dalam MySQL

Masalah:

Anda ingin bertanya jadual pangkalan data di mana medan mengandungi tatasusunan bersiri dan pilih hanya rekod yang mengandungi item tertentu daripada tatasusunan. Khususnya, anda perlu mencari rekod di mana "item dalam tatasusunan saya" bersamaan dengan '$n'.

Penyelesaian:

Menggunakan tatasusunan bersiri untuk tugasan sedemikian ialah bukan penyelesaian yang optimum, tetapi jika anda tidak dapat menyimpan data secara berbeza, anda boleh menggunakan mekanisme bersiri PHP untuk melakukan carian.

Pelaksanaan:

  1. Fahami Format Pensirian PHP: Tatasusunan bersiri pada asasnya ialah rentetan panjang yang mengandungi penunjuk berangka jenis dan panjang data yang berbeza.
  2. Buat Klausa SUKA: Gunakan klausa LIKE untuk mencari perwakilan bersiri bagi item yang diperlukan dalam tatasusunan. Gunakan operator kad bebas '%...%' untuk mengambil kira sifat dinamik rentetan bersiri.
  3. Pertimbangan Prestasi: Perlu diingat bahawa menggunakan LIKE akan mengakibatkan imbasan indeks, mengakibatkan penurunan prestasi yang ketara untuk kompleks tatasusunan.

Syor:

Seperti yang dinyatakan oleh penyumbang lain, adalah sangat dinasihatkan untuk mempertimbangkan untuk menyimpan data dalam cara yang normal jika anda menjangkakan pertanyaan yang kerap dibuat pada kandungan tatasusunan. Ini akan meningkatkan prestasi dan kebolehselenggaraan dengan ketara.

Atas ialah kandungan terperinci Bagaimanakah saya boleh bertanya dengan cekap jadual MySQL dengan medan tatasusunan bersiri untuk mencari rekod yang mengandungi item tertentu?. 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!