Một cột có giá trị NULL
có thể được thêm vào một hàng mà không có bất kỳ thay đổi nào đối với phần còn lại của trang dữ liệu in most cases. Chỉ một bit phải được đặt trong bitmap NULL bitmask. Vì vậy, có, một cột thưa thớt là rẻ hơn nhiều để thêm vào trong hầu hết các trường hợp.
Nên tạo bảng riêng biệt 1: 1 cho các cột bổ sung phụ thuộc rất nhiều vào trường hợp sử dụng. Nó thường đắt hơn. Đối với người mới bắt đầu, có một chi phí là 28 byte (tiêu đề heaptuple cộng với con trỏ mục) mỗi hàng và một số chi phí bổ sung cho mỗi bảng. Nó cũng đắt hơn nhiều đối với JOIN
hàng trong một truy vấn hơn là đọc chúng trong một phần. Và bạn cần thêm cột khóa chính/khóa ngoài cùng với chỉ mục trên đó. Chia tách có thể là một ý tưởng hay nếu bạn không cần các cột bổ sung trong hầu hết các truy vấn. Chủ yếu nó là một ý tưởng tồi.
Thêm cột nhanh trong PostgreSQL. Cập nhật các giá trị trong cột là những gì có thể tốn kém, bởi vì mỗi UPDATE
viết một hàng mới (do mô hình MVCC). Do đó, bạn nên cập nhật nhiều cột cùng một lúc.
Database page layout in the manual.
Làm thế nào để tính toán kích thước hàng:
Nguồn
2012-04-04 23:29:45
'có một overhead của 28 byte (tiêu đề heaptuple cộng con trỏ item) cho mỗi hàng và một số thêm chi phí cho mỗi bảng 'Chỉ cần để xác nhận, điều này có nghĩa là một bảng thông qua với ba số nguyên 4 byte (khóa chính + 2 fo khóa trị vì) sẽ mất 28 + 12 byte mỗi hàng? – dtgq
@DavidTan: Trên thực tế, tổng cộng 44 byte mỗi hàng. 24 + 4 + 3 * 4 + 4 byte của liên kết đệm. Tôi đã thêm các liên kết để giải thích chi tiết hơn ở trên. –