ฉันมีตารางที่มี 1.4 พันล้านบันทึก โครงสร้างของตารางมีดังนี้:
CREATE TABLE text_page (
text VARCHAR(255),
page_id INT UNSIGNED
) ENGINE=MYISAM DEFAULT CHARSET=ascii
text
ความต้องการคือการสร้างดัชนีมากกว่าคอลัมน์
ขนาดโต๊ะประมาณ 34G
ฉันพยายามสร้างดัชนีโดยคำสั่งต่อไปนี้:
ALTER TABLE text_page ADD KEY ix_text (text)
หลังจากรอ 10 ชั่วโมงในที่สุดฉันก็ยอมแพ้วิธีนี้
มีวิธีแก้ปัญหาที่ใช้การได้กับปัญหานี้หรือไม่?
UPDATE : ตารางไม่น่าจะถูกปรับปรุงหรือแทรกหรือลบ สาเหตุที่สร้างดัชนีในคอลัมน์text
เป็นเพราะแบบสอบถามชนิดนี้จะถูกเรียกใช้งานบ่อย:
SELECT page_id FROM text_page WHERE text = ?
UPDATE : ฉันได้แก้ไขปัญหาด้วยการแบ่งตาราง
ตารางจะแบ่งออกเป็น 40 text
ชิ้นในคอลัมน์ จากนั้นการสร้างดัชนีบนตารางจะใช้เวลาประมาณ 1 ชั่วโมงจึงจะเสร็จสมบูรณ์
ดูเหมือนว่าการสร้างดัชนี MySQL ช้ามากเมื่อขนาดของตารางใหญ่มาก และการแบ่งพาร์ติชั่นช่วยลดตารางให้เล็กลง
CREATE INDEX
คำสั่งปกติ?