Heim  >  Artikel  >  Datenbank  >  Wie kann ich eine MySQL-Tabelle effizient mit einem serialisierten Array-Feld abfragen, um Datensätze zu finden, die ein bestimmtes Element enthalten?

Wie kann ich eine MySQL-Tabelle effizient mit einem serialisierten Array-Feld abfragen, um Datensätze zu finden, die ein bestimmtes Element enthalten?

DDD
DDDOriginal
2024-11-08 16:06:02879Durchsuche

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

Abrufen von Daten aus serialisierten Arrays in MySQL

Problem:

Sie möchten a abfragen Erstellen Sie eine Datenbanktabelle, in der ein Feld ein serialisiertes Array enthält, und wählen Sie nur Datensätze aus dem Array aus, die ein bestimmtes Element enthalten. Insbesondere müssen Sie Datensätze finden, bei denen „ein Element in meinem Array“ gleich „$n“ ist.

Lösung:

Die Verwendung eines serialisierten Arrays für eine solche Aufgabe ist Keine optimale Lösung, aber wenn Sie die Daten nicht anders speichern können, können Sie den Serialisierungsmechanismus von PHP nutzen, um die Suche durchzuführen.

Implementierung:

  1. Verstehen Sie das Serialisierungsformat von PHP: Das serialisierte Array ist im Wesentlichen eine lange Zeichenfolge, die numerische Indikatoren verschiedener Datentypen und Längen enthält.
  2. Erstellen Sie eine LIKE-Klausel: Verwenden Sie die LIKE-Klausel, um nach der serialisierten Darstellung des erforderlichen Elements innerhalb der zu suchen Array. Verwenden Sie einen Platzhalteroperator „%...%“, um die dynamische Natur der serialisierten Zeichenfolge zu berücksichtigen.
  3. Leistungsüberlegungen: Beachten Sie, dass die Verwendung von LIKE zu Indexscans führt, was zu erheblichen Leistungseinbußen bei komplexen führt Arrays.

Empfehlung:

Wie von anderen Mitwirkenden erwähnt, ist es sehr ratsam, die Speicherung der Daten auf normalisierte Weise in Betracht zu ziehen, wenn Sie mit häufigen Abfragen rechnen auf Array-Inhalte. Dies wird die Leistung und Wartbarkeit erheblich verbessern.

Das obige ist der detaillierte Inhalt vonWie kann ich eine MySQL-Tabelle effizient mit einem serialisierten Array-Feld abfragen, um Datensätze zu finden, die ein bestimmtes Element enthalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn