นี่คือคำถาม ...
พิจารณา 192 ล้านล้านบันทึกสิ่งที่ฉันควรพิจารณา
ความกังวลหลักของฉันคือความเร็ว
นี่คือตาราง ...
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`)
);
นี่คือข้อความค้นหา ...
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")
นี่คือบันทึกบางส่วน ...
- การเลือกจะทำได้บ่อยกว่า INSERT มาก อย่างไรก็ตามในบางครั้งฉันต้องการเพิ่มบันทึกสองสามร้อยครั้ง
- โหลดฉลาดจะมีอะไรสำหรับชั่วโมงแล้วอาจจะมีไม่กี่พันแบบสอบถามทั้งหมดในครั้งเดียว
- ไม่คิดว่าฉันสามารถทำให้ปกติอีกต่อไป (ต้องการค่า p ในการรวมกัน)
- ฐานข้อมูลโดยรวมมีความสัมพันธ์มาก
- นี่จะเป็นตารางที่ใหญ่ที่สุดโดยไกล (ถัดไปคือประมาณ 900k)
อัปเดต (08/11/2010)
น่าสนใจฉันได้รับตัวเลือกที่สอง ...
แทนที่จะเป็น 192 ล้านล้านฉันสามารถเก็บ2.6 * 10 ^ 16 (15 ศูนย์, หมายถึง 26 Quadrillion) ...
แต่ในตัวเลือกที่สองนี้ฉันจะต้องเก็บหนึ่ง bigint (18) เป็นดัชนีในตาราง แค่นั้น - คอลัมน์เดียว ดังนั้นฉันจะตรวจสอบการมีอยู่ของค่า การเพิ่มบันทึกเป็นครั้งคราวไม่ต้องลบทิ้ง
ดังนั้นที่ทำให้ฉันคิดว่าจะต้องมีทางออกที่ดีกว่าแล้ว mysql เพียงเก็บหมายเลข ...
ให้ตัวเลือกที่สองนี้ฉันควรจะเอามันหรือติดกับตัวแรก ...
[แก้ไข]เพิ่งทราบข่าวว่ามีการทดสอบเสร็จแล้ว - 100 ล้านแถวด้วยการตั้งค่านี้จะส่งคืนข้อความค้นหาใน 0.0004 วินาที[/ แก้ไข]