Những gì bạn yêu cầu thường không được thực hiện, vì bạn thường sử dụng update()
đặt nhiều bản ghi có cùng giá trị hoặc đặt một bản ghi có nhiều giá trị khác nhau.
Một cách để giải quyết vấn đề này là tổng hợp các bản cập nhật, vì vậy, sử dụng mảng của bạn, hãy lấy tất cả các id có năm là 2011, sau đó chạy điều này:
$where = array();
// This where should contain all the ids that need the year set to 2011
// E.g.
$where[] = array("id" => 3);
$db->update("table_name", array("year" => 2011), $where);
Làm điều này sẽ giảm số lượng truy vấn giả sử bạn có nhiều hàng với cùng một năm. Tài liệu cho việc này là tại đây .
Hoặc bạn có thể sử dụng một phương thức như thế này
Chỉnh sửa sau phản hồi OP
Bản chất của vấn đề có nghĩa là nó không thể được giải quyết một cách hiệu quả.
Yêu cầu của bạn về một cách cập nhật 3.700 hàng dữ liệu với các bộ dữ liệu rất khác nhau. Nếu các tập dữ liệu khác nhau thì không có mẫu nào mà bạn có thể khai thác để tạo ra hiệu quả. Việc tìm kiếm các mẫu, chẳng hạn như các hàng có cùng năm và sử dụng chúng theo lợi ích của bạn sẽ tăng tốc độ truy vấn nhưng sẽ yêu cầu một số hoạt động của bộ não dưới dạng trộn mảng như đã lưu ý bởi regilero.