Luôn luôn có các lựa chọn khác :).
Trong trường hợp của tôi, việc sử dụng kết xuất là không có cơ sở vì chúng tôi cũng có một cơ sở dữ liệu rất lớn (1,2 GB khi loại bỏ các yếu tố cần thiết,> 250 GB khi hoạt động). Thay vào đó, tôi có một loạt tệp .sql có thể xóa bất kỳ bản ghi nào. đã được chèn bởi một bài kiểm tra cụ thể.
Tôi có một lớp DbHelper có chức năng này để chạy các truy vấn:
public function executeOnDatabase($path_to_sql_file)
{
$sql = file_get_contents($path_to_sql_file);
$dbh = $this->getModule('Db')->dbh;
$this->debugSection('Query', $sql);
$sth = $dbh->prepare($sql);
return $sth->execute();
}
Hoạt động như một sự quyến rũ và không cần phải chạy thử nghiệm nữa.
Cập nhật:
Nếu bạn xử lý người dùng và dữ liệu liên quan của họ, việc nhắm mục tiêu tất cả các bản ghi bạn cần xóa thường khá dễ dàng. Nhiều khả năng tên người dùng và email là duy nhất và bạn có thể sử dụng chúng để lấy id (khóa chính tăng tự động) của người dùng. Id đó có thể được sử dụng trong các bảng liên quan. Ví dụ như thế này:
SET @user_id = (SELECT `id` FROM `users` WHERE `username` = 'rgsfdg');
SET @email = '[email protected]';
DELETE FROM `mail_queue` WHERE `send_to` = @email;
DELETE FROM `user_settings` WHERE `user_id` = @user_id;
DELETE FROM `users` WHERE `id` = @user_id;