InnoDB cung cấp cấu trúc khóa phức tạp hơn MyIsam (FOREIGN KEYS
) và việc tạo lại các khóa thực sự chậm trong InnoDB. Bạn nên đính kèm tất cả các câu lệnh cập nhật / chèn vào một giao dịch (các câu lệnh này thực sự khá nhanh trong InnoDB, trước đây tôi có khoảng 300 000 truy vấn chèn trên bảng InnoDb với 2 chỉ mục và mất khoảng 30 phút, cứ sau mỗi 10 000 lần chèn thì tôi lại thêm vào BEGIN TRANSACTION
và COMMIT
mất chưa đầy 2 phút).
Tôi khuyên bạn nên sử dụng:
BEGIN TRANSACTION;
SELECT ... FROM products;
UPDATE ...;
INSERT INTO ...;
INSERT INTO ...;
INSERT INTO ...;
COMMIT;
Điều này sẽ khiến InnoDB làm mới các chỉ mục chỉ một lần chứ không phải vài trăm lần.
Hãy cho tôi biết nếu nó hoạt động