Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah saya boleh bertanya dengan cekap jadual MySQL dengan medan tatasusunan bersiri untuk mencari rekod yang mengandungi item tertentu?

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

DDD
DDDasal
2024-11-08 16:06:02825semak imbas

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!

Kenyataan:
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