Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyimpan dan Mengambil Tatasusunan dengan Cekap dalam MySQL?

Bagaimana untuk Menyimpan dan Mengambil Tatasusunan dengan Cekap dalam MySQL?

DDD
Lepaskan: 2024-12-03 00:15:11
asal
779 orang telah melayarinya

How to Efficiently Store and Retrieve Arrays in MySQL?

Menyimpan dan Mendapatkan Tatasusunan dalam MySQL

Menyimpan tatasusunan dalam satu medan MySQL tidak disyorkan kerana isu penormalan data hubungan. Walau bagaimanapun, jika menyimpan tatasusunan dalam satu medan adalah perlu, fungsi serialize() dan unserialize() boleh digunakan.

Untuk menyimpan tatasusunan ($a) ke dalam medan MySQL, tukarkannya kepada rentetan menggunakan 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;}}'
Salin selepas log masuk

Kemudian, masukkan nilai bersiri ke dalam pangkalan data.

Untuk mendapatkan semula tatasusunan daripada pangkalan data, pertanyaan untuk medan dan tukar rentetan yang disimpan kembali kepada tatasusunan menggunakan unserialize():

$query = "SELECT my_array_field FROM my_table";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
$a = unserialize($row['my_array_field']);
Salin selepas log masuk

Sebagai alternatif, json_encode() dan json_decode() boleh digunakan untuk mengekod dan menyahkod tatasusunan daripada format JSON, masing-masing.

Pendekatan Alternatif: Pangkalan Data Perhubungan Reka bentuk

Daripada menyimpan tatasusunan dalam satu medan, pertimbangkan untuk menstruktur semula skema pangkalan data anda untuk mewakili elemen tatasusunan sebagai rekod individu dalam jadual berkaitan. Ini membolehkan pemodelan hubungan yang betul dan pertanyaan yang cekap.

Sebagai contoh, pertimbangkan tatasusunan:

$a = [
    1 => [
        'a' => 1,
        'b' => 2,
        'c' => 3
    ],
    2 => [
        'a' => 1,
        'b' => 2,
        'c' => 3
    ],
];
Salin selepas log masuk

Anda boleh mencipta jadual berasingan untuk kunci tatasusunan dan nilai:

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)
);
Salin selepas log masuk

Kemudian, masukkan elemen tatasusunan ke dalam jadual masing-masing:

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);
Salin selepas log masuk

Pendekatan ini membolehkan pertanyaan yang cekap dan manipulasi data tatasusunan dalam pangkalan data hubungan.

Atas ialah kandungan terperinci Bagaimana untuk Menyimpan dan Mengambil Tatasusunan dengan Cekap dalam MySQL?. 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