Không phải với PostgreSQL, từ hướng dẫn sử dụng :
Vì vậy, một cột ký tự lớn (chẳng hạn như TEXT
hoặc VARCHAR
không có giới hạn kích thước cụ thể) được lưu trữ ngoài dữ liệu bảng chính. Vì vậy, PostgreSQL đã tích hợp sẵn tính năng tối ưu hóa "đặt nó trong một bảng riêng". Nếu bạn đang sử dụng PostgreSQL, hãy sắp xếp bảng của bạn một cách hợp lý và để bố cục dữ liệu cho PostgreSQL.
Tôi không biết MySQL hoặc các RDBM khác sắp xếp dữ liệu của chúng như thế nào.
Lý do đằng sau sự tối ưu hóa này là cơ sở dữ liệu thường sẽ giữ dữ liệu cho mỗi hàng trong các khối liền kề trên đĩa để giảm bớt việc tìm kiếm khi hàng đó cần được đọc hoặc cập nhật. Nếu bạn có một cột TEXT (hoặc kiểu có độ dài thay đổi khác) trong một hàng thì kích thước của hàng đó có thể thay đổi, vì vậy bạn cần thực hiện thêm công việc để chuyển từ hàng này sang hàng khác. Sự tương tự sẽ là sự khác biệt giữa việc truy cập một cái gì đó trong danh sách được liên kết so với việc truy cập một mảng; với danh sách được liên kết, bạn phải đọc ba phần tử một lúc để đến phần thứ tư, với một mảng bạn chỉ cần bù đắp 3 * element_size
byte ngay từ đầu và bạn chỉ cần thực hiện một bước.