Để trả lời câu hỏi, trên đĩa MySql sử dụng 1 + kích thước được sử dụng trong trường để lưu trữ dữ liệu (vì vậy nếu cột được khai báo là varchar (45) và trường là "FooBar", nó sẽ sử dụng 7 byte trên đĩa, Tất nhiên, trừ khi bạn sử dụng bộ ký tự nhiều byte, nơi nó sẽ sử dụng 14 byte). Vì vậy, dù bạn khai báo các cột của mình, nó sẽ không tạo ra sự khác biệt ở phần cuối lưu trữ (bạn đã nói rằng bạn lo lắng về việc tối ưu hóa ổ đĩa cho một bảng lớn). Tuy nhiên, nó thực sự tạo ra sự khác biệt trong các truy vấn, vì VARCHAR được chuyển đổi thành CHAR khi MySql tạo một bảng tạm thời (SORT, ORDER, v.v.) và càng nhiều bản ghi bạn có thể vừa với một trang thì càng ít bộ nhớ và bảng của bạn quét nhanh hơn. được.