Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Django quản trị viên MySQL chậm INNER JOIN

Tôi đã triển khai bản sửa lỗi cho INNER JOIN cho Django ORM, nó sẽ sử dụng STRAIGHT_JOIN trong trường hợp đặt hàng bằng INNER JOIN. Tôi đã nói chuyện với các nhà phát triển lõi Django và chúng tôi quyết định làm điều này như một phần phụ trợ riêng biệt ngay bây giờ. Vì vậy, bạn có thể xem tại đây: https://pypi.python.org/pypi / django-mysql-fix

Tuy nhiên, có một cách giải quyết khác. Sử dụng một đoạn trích từ câu trả lời của James, nhưng thay select_inity bằng:

qs = qs.select_related('').prefetch_related('wheel', 'dealer', 'category')

Nó sẽ hủy INNER JOIN và sử dụng 4 truy vấn riêng biệt:1 để tìm nạp ô tô và 3 truy vấn khác với car_id VÀO (...).

CẬP NHẬT: Tôi đã tìm thấy một giải pháp khác. Sau khi bạn chỉ định null =True trong trường ForeignKey của mình, Django sẽ sử dụng LEFT OUTER JOIN thay vì INNER JOIN. LEFT OUTER JOIN hoạt động mà không có vấn đề về hiệu suất trong trường hợp này, nhưng bạn có thể gặp phải các vấn đề khác mà tôi chưa biết.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHÈN CÓ ĐIỀU KIỆN VÀO MySQL - KHÔNG TỒN TẠI

  2. Làm thế nào để truy vấn bảng MySQL này theo cách hiệu quả nhất?

  3. Sử dụng Docker, tôi gặp lỗi:SQLSTATE [HY000] [2002] Không có tệp hoặc thư mục nào như vậy

  4. Tìm kiếm MySQL trong danh sách dấu phẩy

  5. Ví dụ về CURDATE () - MySQL