Inilah pertanyaannya ...
Mempertimbangkan 192 triliun catatan, apa yang harus saya pertimbangkan?
Perhatian utama saya adalah kecepatan.
Ini meja ...
CREATE TABLE `ref` (
`id` INTEGER(13) AUTO_INCREMENT DEFAULT NOT NULL,
`rel_id` INTEGER(13) NOT NULL,
`p1` INTEGER(13) NOT NULL,
`p2` INTEGER(13) DEFAULT NULL,
`p3` INTEGER(13) DEFAULT NULL,
`s` INTEGER(13) NOT NULL,
`p4` INTEGER(13) DEFAULT NULL,
`p5` INTEGER(13) DEFAULT NULL,
`p6` INTEGER(13) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY (`s`),
KEY (`rel_id`),
KEY (`p3`),
KEY (`p4`)
);
Inilah pertanyaannya ...
SELECT id, s FROM ref WHERE red_id="$rel_id" AND p3="$p3" AND p4="$p4"
SELECT rel_id, p1, p2, p3, p4, p5, p6 FROM ref WHERE id="$id"
INSERT INTO rel (rel_id, p1, p2, p3, s, p4, p5, p6)
VALUES ("$rel_id", "$p1", "$p2", "$p3", "$s", "$p4", "$p5", "$p6")
Ini beberapa catatan ...
- SELECT akan dilakukan lebih sering daripada INSERT. Namun, kadang-kadang saya ingin menambahkan beberapa ratus catatan sekaligus.
- Dari segi muatan, tidak akan ada apa pun selama berjam-jam maka mungkin beberapa ribu pertanyaan sekaligus.
- Jangan pikir saya bisa menormalkan lagi (perlu nilai p dalam kombinasi)
- Basis data secara keseluruhan sangat relasional.
- Ini akan menjadi meja terbesar sejauh ini (terbesar berikutnya sekitar 900k)
UPDATE (08/11/2010)
Menariknya, saya telah diberi opsi kedua ...
Alih-alih 192 triliun saya bisa menyimpan 2,6 * 10 ^ 16 (15 nol, artinya 26 Quadrillion) ...
Tetapi dalam opsi kedua ini saya hanya perlu menyimpan satu bigint (18) sebagai indeks dalam sebuah tabel. Itu dia - hanya satu kolom. Jadi saya hanya akan memeriksa keberadaan suatu nilai. Terkadang menambahkan catatan, jangan pernah menghapusnya.
Sehingga membuat saya berpikir harus ada solusi yang lebih baik maka mysql untuk sekadar menyimpan angka ...
Diberi pilihan kedua ini, haruskah saya mengambilnya atau tetap dengan yang pertama ...
[sunting] Baru saja mendapat kabar tentang beberapa pengujian yang telah dilakukan - 100 juta baris dengan pengaturan ini mengembalikan kueri dalam 0,0004 detik [/ edit]