Heim > Datenbank > MySQL-Tutorial > Wie kann man Arrays in MySQL effizient speichern und abrufen?

Wie kann man Arrays in MySQL effizient speichern und abrufen?

DDD
Freigeben: 2024-12-03 00:15:11
Original
693 Leute haben es durchsucht

How to Efficiently Store and Retrieve Arrays in MySQL?

Speichern und Abrufen von Arrays in MySQL

Das Speichern von Arrays in einem einzelnen MySQL-Feld wird aufgrund von Problemen bei der Normalisierung relationaler Daten nicht empfohlen. Wenn jedoch das Speichern eines Arrays in einem einzelnen Feld erforderlich ist, können die Funktionen serialize() und unserialize() verwendet werden.

Um ein Array ($a) in einem MySQL-Feld zu speichern, konvertieren Sie es mit in einen String serialize():

$a_serialized = serialize($a);
// $a_serialized: 'a:2:{i:1;a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;}i:2;a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;}}'
Nach dem Login kopieren

Fügen Sie dann den serialisierten Wert in die Datenbank ein.

Um das Array aus der Datenbank abzurufen, fragen Sie nach dem Feld und konvertieren Sie die gespeicherte Zeichenfolge zurück zu einem Array mit unserialize():

$query = "SELECT my_array_field FROM my_table";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
$a = unserialize($row['my_array_field']);
Nach dem Login kopieren

Alternativ können json_encode() und json_decode() verwendet werden, um Arrays aus dem JSON-Format zu kodieren bzw. zu dekodieren.

Alternative Ansatz: Relationales Datenbankdesign

Anstatt Arrays in einem einzelnen Feld zu speichern, sollten Sie eine Umstrukturierung in Betracht ziehen Ihr Datenbankschema, um die Array-Elemente als einzelne Datensätze in zugehörigen Tabellen darzustellen. Dies ermöglicht eine ordnungsgemäße relationale Modellierung und effiziente Abfragen.

Betrachten Sie beispielsweise das Array:

$a = [
    1 => [
        'a' => 1,
        'b' => 2,
        'c' => 3
    ],
    2 => [
        'a' => 1,
        'b' => 2,
        'c' => 3
    ],
];
Nach dem Login kopieren

Sie könnten separate Tabellen für die Array-Schlüssel und -Werte erstellen:

CREATE TABLE keys (
    id INT UNSIGNED NOT NULL,
    a INT UNSIGNED NOT NULL,
    b INT UNSIGNED NOT NULL,
    c INT UNSIGNED NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE values (
    id INT UNSIGNED NOT NULL,
    value INT UNSIGNED NOT NULL,
    key_id INT UNSIGNED NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (key_id) REFERENCES keys(id)
);
Nach dem Login kopieren

Fügen Sie dann die Array-Elemente in die entsprechenden Tabellen ein:

INSERT INTO keys (id, a, b, c) VALUES (1, 1,2,3);
INSERT INTO values (id, value, key_id) VALUES (1, 1, 1);
INSERT INTO values (id, value, key_id) VALUES (2, 2, 1);
INSERT INTO values (id, value, key_id) VALUES (3, 3, 1);
INSERT INTO keys (id, a, b, c) VALUES (2, 1,2,3);
INSERT INTO values (id, value, key_id) VALUES (4, 1, 2);
INSERT INTO values (id, value, key_id) VALUES (5, 2, 2);
INSERT INTO values (id, value, key_id) VALUES (6, 3, 2);
Nach dem Login kopieren

Dieser Ansatz ermöglicht eine effiziente Abfrage und Bearbeitung der darin enthaltenen Array-Daten eine relationale Datenbank.

Das obige ist der detaillierte Inhalt vonWie kann man Arrays in MySQL effizient speichern und abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage