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

Các cột VARCHAR có nên được đặt ở cuối các định nghĩa bảng trong MySQL không?

Đặt câu hỏi về "MySQL" là không hữu ích, vì MySQL chuyển loại lưu trữ cho các công cụ lưu trữ và chúng triển khai lưu trữ theo những cách rất khác nhau. Thật hợp lý khi đặt câu hỏi này cho bất kỳ công cụ lưu trữ cá nhân nào.

Trong công cụ MEMORY, các kiểu dữ liệu có độ dài thay đổi không tồn tại. Một VARCHAR được thay đổi một cách âm thầm thành một CHAR. Trong ngữ cảnh câu hỏi của bạn:Bạn đặt VARCHAR ở đâu trong định nghĩa bảng không quan trọng.

Trong MyISAM engine, nếu một bảng không có dữ liệu có độ dài thay đổi nào (VARCHAR, VARBINARY hoặc bất kỳ loại TEXT hoặc BLOB nào) thì bảng đó là biến thể CỐ ĐỊNH của MyISAM, tức là các bản ghi có độ dài byte cố định. Điều này có thể có ý nghĩa về hiệu suất, đặc biệt nếu dữ liệu bị xóa và chèn nhiều lần (tức là bảng không chỉ là phần phụ thêm). Ngay khi bất kỳ kiểu dữ liệu có độ dài thay đổi nào là một phần của định nghĩa bảng, nó sẽ trở thành biến thể DYNAMIC của MyISAM và MyISAM thay đổi nội bộ bất kỳ trừ loại CHAR ngắn nhất nào trong nội bộ thành VARCHAR. Một lần nữa, vị trí và thậm chí cả định nghĩa của CHAR / VARCHAR không quan trọng.

Trong công cụ InnoDB, dữ liệu được lưu trữ trong các trang có kích thước 16 KB. Một trang có chân trang với tổng kiểm tra và đầu trang, cùng với những thứ khác là thư mục trang. Thư mục trang chứa cho mỗi hàng phần bù của hàng đó so với phần đầu của trang. Một trang cũng chứa không gian trống và tất cả I / O được thực hiện trong các trang.

Do đó, InnoDB có thể, miễn là có không gian trống trong một trang, phát triển VARCHAR tại chỗ và di chuyển các hàng xung quanh bên trong một trang mà không phát sinh thêm bất kỳ I / O nào. Ngoài ra, vì tất cả các hàng đang được đánh địa chỉ là (pagenumber, mục nhập thư mục trang), chuyển động của một hàng bên trong trang được bản địa hóa vào trang và không thể nhìn thấy từ bên ngoài.

Điều đó cũng có nghĩa là đối với InnoDB cũng vậy, thứ tự của các cột bên trong một hàng hoàn toàn không quan trọng.

Đây là ba công cụ lưu trữ được sử dụng phổ biến nhất với MySQL và thứ tự của các cột không quan trọng đối với bất kỳ công cụ nào trong ba công cụ này. Có thể là các công cụ lưu trữ khác, kỳ lạ hơn tồn tại mà điều này không đúng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di chuyển sang OpenJDK 11, phiên bản nào của trình kết nối MySql tương thích với java 11?

  2. Có thể sử dụng tệp .mylogin.cnf trong c # để thiết lập kết nối không?

  3. MySQL &PHP Tham số 1 dưới dạng tài nguyên

  4. Chèn MySQL chậm

  5. kết nối với mysql bằng c # .net