Saya punya meja dengan sekitar 30 juta baris di MySQL 5.5 menggunakan mesin penyimpanan InnoDB. Tabel ini memiliki kunci asing yang tertaut ke tabel lain dengan sekitar 3 juta baris.
Saya ingin menambahkan kunci utama ke tabel yang lebih besar, tetapi saya tidak yakin bagaimana cara terbaik untuk melakukannya. Tidak ada kolom yang ada (atau kumpulan kolom) yang dapat saya gunakan untuk ini, jadi bagaimana saya harus melakukannya?
Saya telah melihat beberapa referensi ke ID rekaman InnoDB internal, tetapi belum menemukan apakah ini dapat diakses.
Kalau tidak, mungkin saya perlu membuang dan memuat kembali data, menambahkan id secara manual.
Terima kasih.
mysql
innodb
primary-key
Wodin
sumber
sumber
Jawaban:
ini mungkin cara yang salah untuk melakukannya, tapi ..
Anda tidak bisa hanya mengubah struktur tabel,
tambahkan kolom kunci utama ke tabel
kemudian...
tulis skrip cepat untuk menelusuri seluruh tabel
menambahkan nilai autoincrementing ke kolom baru?
sumber
ALTER TABLE blah ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
dan butuh 2 jam 18 menit :) Saya tidak mencoba menulis ke meja selama waktu itu, tetapi membaca bekerja dengan baik.Inilah cara saya mendekati ini:
* Catatan: Jika tabel asal adalah InnoDB, batasan kunci asing akan dipertahankan dan selamat dari penggantian nama. Jadi, Anda harus melakukan perubahan untuk memperbaiki itu.
sumber