Setup:
Django 1.1.2, MySQL 5.1Làm thế nào để làm cho Django QuerySet số lượng lớn xóa() hiệu quả hơn
Vấn đề:
Blob.objects.filter(foo = foo) \
.filter(status = Blob.PLEASE_DELETE) \
.delete()
đoạn này kết quả trong ORM đầu tiên tạo ra một truy vấn SELECT * from xxx_blob where ...
, sau đó thực hiện một DELETE from xxx_blob where id in (BLAH);
trong đó BLAH là một danh sách rất dài của id. Vì tôi đang xóa một lượng lớn các đốm màu, điều này khiến cả tôi lẫn DB đều không vui.
Có lý do nào cho điều này không? Tôi không thấy lý do tại sao ORM không thể chuyển đổi đoạn mã trên thành một truy vấn DELETE đơn lẻ. Có cách nào để tối ưu hóa điều này mà không cần đến SQL thô?
Điều này thực sự không may. Cảm ơn đã chỉ cho tôi vé. – svintus
Vé cho lý do bạn đang tìm kiếm. Nó không hoàn toàn không có công đức. –