Độ dài tối đa của chỉ mục Mysql varchar
Đôi khi, khi bạn đang xem lược đồ của cơ sở dữ liệu, bạn sẽ thấy rằng có các trường văn bản được định nghĩa như thế này Show
Điều này có nghĩa là cột hỗ trợ các chuỗi có độ dài tối đa là 191 ký tự và không thể là Câu hỏi đầu tiên bạn có thể hỏi là tại sao lại giới hạn độ dài của các chuỗi mà bạn có thể lưu trữ trong cơ sở dữ liệu? Nếu bạn định tìm kiếm theo một cột, chẳng hạn như
Khi bảng của bạn lớn hơn, các tìm kiếm sẽ chậm hơn vì cơ sở dữ liệu của bạn phải kiểm tra mọi hàng để tìm kết quả khớp. Tuy nhiên, nếu bạn thêm một chỉ mục tìm kiếm, về cơ bản, bạn đang yêu cầu cơ sở dữ liệu của mình "tính toán trước" các mẫu tìm kiếm phổ biến bằng một cây để tìm kiếm tiếp theo nhanh hơn nhiều. Về bản chất, các chỉ mục dành thời gian tính toán (và một ít dung lượng ổ đĩa) khiến việc ghi vào cơ sở dữ liệu chậm hơn, để tăng tốc độ đọc sau này. Đối với hầu hết các ứng dụng, đây là một sự cân bằng tuyệt vời, vì chúng "đọc nặng" và "viết nhẹ" Vì vậy, tại sao lại sử dụng Ok, vì vậy các chỉ mục là tốt. Tuy nhiên, nhìn chung, có vẻ như một chỉ mục có kích thước bất kỳ sẽ hoạt động và mặc dù điều đó đúng ngày nay, nhưng không phải lúc nào cũng có thể. Điểm dừng tiếp theo trong hành trình của chúng ta là xem trước đây kích thước cột mặc định là bao nhiêu và đó là 255 ký tự, e. g
MySQL, cơ sở dữ liệu nguồn mở phổ biến nhất vào đầu những năm 2000 có giới hạn 255 ký tự trong các trường được lập chỉ mục. Lịch sử không rõ ràng về lý do tại sao MySQL chọn giới hạn 255 ký tự (xem các bài viết được liên kết bên dưới), nhưng các lý thuyết phổ biến nhất bao gồm
Với giới hạn 256 ký tự, các nhà phát triển MySQL cảm thấy thoải mái hơn nữa khi tối ưu hóa nhiều phần của cơ sở dữ liệu so với giới hạn 255 ký tự đó (sẽ nói thêm về điều này sau). Vì nhiều khung ứng dụng nguồn mở phổ biến đã ra mắt trong khoảng thời gian đó (Wordpress, Django và Rails, có thể kể tên một số), tất cả chúng đều tuân theo các giá trị mặc định của MySQL, ngay cả khi chúng có thể chạy trên nhiều loại cơ sở dữ liệu, như postgres. Điều này hình thành một mặc định chung cho hầu hết các ORM (Object–relational mapping - Wikipedia) để sử dụng 255 có ý nghĩa hơn nhiều so với 191. Làm thế nào chúng ta đến được 191? . Nghiêm trọng. Chà, ít nhất là 0, bộ ký tự cho phép các ký tự "quốc tế" và bao gồm biểu tượng cảm xúc đầu tiên. MySQL vào đầu những năm 2000 rất vui khi hỗ trợ 255 ký tự trong các cột varchar và lập chỉ mục cho chúng. Tuy nhiên, mã hóa văn bản phổ biến nhất ( 2 hoặc 3 ) trên công cụ cơ sở dữ liệu MySQL phổ biến nhất ( 4) giả định rằng 3 byte là đủ để lưu trữ mọi ký tự và một khi 0 xuất hiện cùng với các ký tự như 𠼭 và 🐟, thì cần 4 byte . Có nhiều ký tự hơn để lựa chọn, vì vậy việc tham chiếu chúng mất nhiều byte hơnCách thức hoạt động của cơ sở dữ liệu MySQL 4 là bạn chỉ có thể có 767 byte cho một chỉ mục - đủ để lưu trữ 255 ký tự 3 byte ( 7). Đây là một ví dụ cực đoan về tối ưu hóa chỉ mục dựa trên việc biết kích thước của dữ liệu bạn đang lập chỉ mục. Vì vậy, nếu các ký tự chiếm nhiều không gian hơn để lưu trữ, thì số lượng ký tự bạn có thể lập chỉ mục phải nhỏ hơn. Cụ thể, 8 ký tự. Khi có nhiều phần mềm hỗ trợ khán giả quốc tế hơn, 9 đã thay thế varchar(255) làm mặc định. Đối với những ứng dụng phần mềm không cần hỗ trợ người dùng quốc tế, chúng cũng cần nâng cấp khi người dùng bắt đầu mong đợi hỗ trợ biểu tượng cảm xúc (thường liên quan đến sự gia tăng của điện thoại thông minh) vào đầu những năm 2010Ngày nay, với cơ sở dữ liệu hiện đại, mã hóa ký tự như 0 và các ký tự khác có thể hỗ trợ "tất cả" ký tự là mặc định và chỉ mục độ dài cố định đã là dĩ vãng. Tuy nhiên, chúng tôi vẫn có các mặc định 191 ký tự này trong nhiều ứng dụng để đảm bảo tính tương thích. Bất chấp điều đó, các chỉ mục vẫn hoạt động tốt nhất khi chúng biết kích thước của các chuỗi mà chúng đang so sánh, vì vậy chúng tôi vẫn muốn có một số giới hạn về độ dài cột của mình vì lý do tốc độ và nhờ vào lịch sử và quán tính, giới hạn 191 vẫn tồn tại với chúng tôi
Độ dài tối đa của VARCHAR trong MySQL là bao nhiêu?Giá trị trong cột VARCHAR là chuỗi có độ dài thay đổi. Độ dài có thể được chỉ định dưới dạng giá trị từ 0 đến 65,535. Độ dài tối đa hiệu quả của VARCHAR tùy thuộc vào kích thước hàng tối đa ( 65.535 byte , được chia sẻ giữa tất cả các cột) và bộ ký tự được sử dụng. Xem Phần 8. 4.
VARCHAR 255 nghĩa là gì?VARCHAR(255) lưu trữ 255 ký tự, có thể lớn hơn 255 byte .
Độ dài chỉ mục MySQL là gì?Một bảng có thể chứa tối đa 64 chỉ mục phụ. Giới hạn độ dài tiền tố của khóa chỉ mục là 3072 byte cho các bảng InnoDB sử dụng định dạng hàng NĂNG ĐỘNG hoặc NÉN . Giới hạn độ dài tiền tố của khóa chỉ mục là 767 byte cho các bảng InnoDB sử dụng định dạng hàng REDUNDANT hoặc COMPACT.
Giới hạn của VARCHAR là gì?varchar [ ( n. tối đa ) ]
. 1 through 8,000, or use max to indicate a column constraint size up to a maximum storage of 2^31-1 bytes (2 GB). |