Tôi phải xóa khoảng 10 nghìn hàng từ một bảng có hơn 100 triệu hàng dựa trên một số tiêu chí. Khi tôi thực hiện truy vấn, nó mất khoảng 5 phút. Tôi đã chạy một kế hoạch giải thích (truy vấn delete
được chuyển đổi thành select *
vì MySQL không hỗ trợ explain delete
) và thấy rằng MySQL sử dụng chỉ mục sai.MySQL, xóa và gợi ý chỉ mục
Câu hỏi của tôi là: có cách nào để cho MySQL biết chỉ mục nào sẽ sử dụng trong khi xóa không? Nếu không, tôi sẽ làm gì? Chọn bảng tạm thời sau đó xóa khỏi bảng tạm thời?
Đảm bảo rằng bạn có khóa chính và cột được đặt tên trong mệnh đề WHERE của việc xóa của bạn được lập chỉ mục. –