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

Khi bạn có một trường TEXT trong MySQL hoặc PostgreSQL, bạn có nên đặt nó trong một bảng riêng không?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi MySQL sang XML qua PHP

  2. Có cách nào trong SQL (MySQL) để thực hiện một LỆNH LỆNH theo vòng tròn trên một trường cụ thể không?

  3. Cách kết nối với Nguồn dữ liệu MySQL trong Visual Studio

  4. Chọn trong mối quan hệ nhiều-nhiều trong MySQL

  5. Xóa khỏi bảng MySQL có ràng buộc khóa ngoại