Theo Giới hạn của PostgreSQL, đó là "250 - 1600 tùy thuộc vào loại cột". Xem ghi chú dưới bảng. Các loại cột ảnh hưởng đến nó vì trong PostgreSQL các hàng có thể rộng tối đa 8kb (một trang), chúng không thể kéo dài các trang. Các giá trị lớn trong các cột là OK vì TOAST xử lý điều đó, nhưng có giới hạn về số lượng cột bạn có thể phù hợp, tùy thuộc vào độ rộng của các loại dữ liệu không TOASTed được sử dụng.
(Chính xác thì điều này đề cập đến các cột có thể được lưu trữ trong các hàng trên đĩa; các truy vấn có thể sử dụng các tập hợp cột rộng hơn thế này. Tôi không khuyên bạn nên dựa vào nó.)
Nếu bạn thậm chí đang nghĩ đến việc tiếp cận các giới hạn cột, có thể bạn sẽ gặp vấn đề.
Ánh xạ bảng tính với cơ sở dữ liệu quan hệ có vẻ như là điều đơn giản nhất trên thế giới - ánh xạ cột thành cột, hàng thành hàng và đi. Đúng? Trong thực tế, bảng tính là những con quái vật dạng tự do khổng lồ, không thực thi cấu trúc nào và có thể thực sự kém hiệu quả. Cơ sở dữ liệu quan hệ được thiết kế để xử lý lô nhiều hàng hơn, nhưng với chi phí; trong trường hợp của PostgreSQL, một phần của chi phí đó là một hạn chế về độ rộng mà nó muốn các hàng đó. Khi đối mặt với các bảng tính do Người dùng Joe tạo, đây có thể là một vấn đề thực sự.
Một "giải pháp" là phân hủy chúng thành EAV, nhưng làm việc chậm và xấu đến không thể tả được. Các giải pháp tốt hơn là sử dụng mảng nếu có thể, các loại kết hợp, hstore
, json, xml, v.v.
Tuy nhiên, cuối cùng, đôi khi câu trả lời tốt nhất là phân tích bảng tính bằng cách sử dụng bảng tính.