Truy vấn sử dụng chỉ mục index_status thay vì fk_task_userid (chỉ mục trên node_id). Đây là lý do nó khóa các bản ghi với các node_id khác.
Bạn có thể chạy giải thích trên truy vấn của mình để xem có bao nhiêu bản ghi thực sự bị khóa (trong các hàng được kiểm tra) so với số lượng bản ghi bạn cần khóa (các hàng được trả về)
Tại sao? Tôi cảm thấy các chỉ mục của bạn không phải là tối ưu dù sao ... Tạo chỉ mục trên node_id, trạng thái, nó sẽ giải quyết vấn đề