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

Mối quan hệ giữa Django Postgres ArrayField vs One-to-Many

Nếu bạn sử dụng trường mảng

  • Kích thước của mỗi hàng trong DB của bạn sẽ lớn hơn một chút, do đó Postgres sẽ sử dụng nhiều bảng bánh mì nướng hơn ( http://www.postgresql.org/docs/9.5/static/storage-toast.html )
  • Mỗi khi bạn nhận được hàng, trừ khi bạn sử dụng đặc biệt defer ( https://docs.djangoproject.com/en/1.9 / ref / models / querysets / # defer ) trường hoặc loại trừ nó khỏi truy vấn chỉ qua only hoặc values hoặc điều gì đó, bạn phải trả chi phí tải tất cả các giá trị đó mỗi khi bạn lặp lại trên hàng đó. Nếu đó là điều bạn cần thì hãy cứ làm như vậy.
  • Lọc dựa trên các giá trị trong mảng đó, mặc dù có thể sẽ không tốt và Django ORM không hiển thị rõ ràng như đối với các bảng M2M.

Nếu bạn sử dụng M2M

  • Bạn có thể lọc dễ dàng hơn các giá trị liên quan đó
  • Các trường đó bị hoãn lại theo mặc định, bạn có thể sử dụng prefetch_related nếu bạn cần chúng và sau đó trở nên ưa thích nếu bạn chỉ muốn tải một tập hợp con của những giá trị đó
  • Tổng bộ nhớ trong DB sẽ cao hơn một chút với M2M do có khóa và các trường id bổ sung
  • Chi phí tham gia trong trường hợp này là hoàn toàn không đáng kể vì có khóa.

Cá nhân tôi muốn nói đi với các bảng M2M, nhưng tôi không biết ứng dụng cụ thể của bạn. Nếu bạn đang làm việc với một lượng lớn dữ liệu, bạn nên lấy một tập dữ liệu đại diện và thử nghiệm cả hai phương pháp với nó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có thể thay thế proxy Cloud SQL bằng proxy Istio không?

  2. PostgreSQL json_array_elements trong mệnh đề FROM - tại sao đây không phải là tham gia cartesian?

  3. Cách sửa LỖI:cột c.relhasoids không tồn tại trong Postgres?

  4. MySQL tương đương với PHÂN TÍCH GIẢI THÍCH CỦA PostgreSQL là gì

  5. Ngày định dạng cho Postgresql