Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

หลีกเลี่ยง "repair with keycache" ใน MySQL ด้วยการสร้างตารางใหม่และเพิ่ม Index

ปัญหา "repair with keycache" เกิดขึ้นตอนเพิ่ม Index บนตารางใหญ่ ใช้วิธีสร้างตารางใหม่แล้วค่อยเพิ่ม Index

วิธีแก้

CREATE TABLE new_table AS (SELECT * FROM old_table);
ALTER TABLE new_table ADD INDEX (column_name);

ตัวอย่าง

mysql> CREATE TABLE DemoTable (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentFirstName VARCHAR(20),
    StudentLastName VARCHAR(20)
);
mysql> INSERT INTO DemoTable(StudentFirstName, StudentLastName) VALUES
    ('John', 'Doe'), ('David', 'Miller');

ขั้นตอนที่ 1: สร้างตารางใหม่จากตารางเดิม

mysql> CREATE TABLE DemoTable_new AS (SELECT * FROM DemoTable);
Query OK, 2 rows affected (0.34 sec)

ขั้นตอนที่ 2: เพิ่ม Index บนตารางใหม่

mysql> ALTER TABLE DemoTable_new ADD INDEX (StudentFirstName);
Query OK, 2 rows affected (0.57 sec)

เหตุผล: การสร้างตารางใหม่พร้อมโหลดข้อมูล แล้วค่อยสร้าง Index เร็วกว่าและหลีกเลี่ยง keycache repair เพราะไม่ต้อง rebuild index บนตารางที่มีข้อมูลอยู่แล้ว

หมายเหตุ: หลังเสร็จสิ้น ให้ RENAME TABLE ตารางเก่า แล้ว RENAME ตารางใหม่แทน