Tôi có một truy vấn như thế này mất nhiều thời gian để chạy. Bảng này có khoảng 4 triệu hàng.MySQL chậm khi xóa các bản ghi trong bảng lớn
DELETE FROM TABLE WHERE value_was IS NULL OR value_was <= value_now;
Tôi hy vọng tôi có thể tạo ra một chỉ số cho (value_was, value_now) vì vậy tôi có thể làm điều gì đó như
DELETE FROM TABLE WHERE
ID1 IN (SELECT ID1 from TABLE where value_was IS NULL)
OR ID2 IN (SELECT ID2 FROM TABLE WHERE value_was <= value_now);
bảng này không có khóa chính. Nó có hai phím tổng hợp. Và tôi đoán tôi không thể sử dụng cùng một bảng trong truy vấn con, nhưng làm cách nào để cải thiện hiệu suất của truy vấn đầu tiên?
Cảm ơn rất nhiều đề xuất sẽ được đánh giá cao.
Cập nhật: Các db là InnoDB
Bảng có được lưu trữ trong công cụ lưu trữ 'myISAM' hoặc' innoDB' không? –
Đó là innoDB. Tôi cũng đã cập nhật câu hỏi. – toy