Tôi đã kế thừa một cơ sở dữ liệu và đang tìm cách dọn dẹp và tăng tốc nó. Tôi có một bảng chứa 30.000.000 hàng, nhiều trong số đó là dữ liệu rác được chèn do lỗi thay cho lập trình viên của chúng tôi. Trước khi tôi thêm bất kỳ chỉ mục mới, tối ưu hóa nào hơn, tôi đã chuyển đổi bảng từ MyISAM sang InnoDB và đang tìm cách xóa rất nhiều hàng có chứa dữ liệu rác.
Cơ sở dữ liệu là MySQL 5.0 và tôi có quyền truy cập root vào máy chủ. Lần đầu tiên tôi chạy các lệnh này thông qua Adminer và sau đó là phpMyAdmin, cả hai đều có cùng kết quả.
Lệnh tôi đang chạy là,
DELETE
FROM `tablename`
WHERE `columnname` LIKE '-%'
Về cơ bản, xóa bất cứ thứ gì trong cột này bắt đầu bằng dấu gạch ngang -
.
Nó chạy trong khoảng 3-5 phút và sau đó khi tôi xem danh sách quy trình, nó đã biến mất.
Tôi sau đó chạy
SELECT *
FROM `tablename`
WHERE `columnname` LIKE '-%'
và nó trả về hàng triệu hàng.
Tại sao tuyên bố xóa của tôi không hoàn thành?
PS, tôi biết rằng MySQL 5.0 đã lỗi thời như thế nào. Tôi đang làm việc để chuyển DB sang MySQL 5.6 w InnoDB (có thể là MariaDB 10 w XtraDB) nhưng cho đến khi điều đó xảy ra, tôi đang tìm cách trả lời điều này với DB.
-
Chỉnh sửa loại bỏ, xem câu trả lời của tôi.
WHERE
.