Đây chỉ là vấn đề MySQL -
MySQL có các công cụ khác nhau - MyISAM, InnoDB, Bộ nhớ ...
MySQL có các giới hạn khác nhau về dung lượng bạn có thể sử dụng xác định các chỉ mục trên (các) cột - đối với MyISAM là 1.000 byte; đó là 767 cho InnoDB
. Và kiểu dữ liệu của các cột đó rất quan trọng - đối với VARCHAR
, nó gấp 3 lần nên một chỉ mục trên VARCHAR(100)
sẽ chiếm 300 byte trong số đó (vì 100 ký tự * 3 =300).
Để phù hợp với một số lập chỉ mục khi bạn đạt đến giá trị trần, bạn có thể xác định chỉ mục liên quan đến các phần của kiểu dữ liệu cột:
CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))
Giả sử rằng your_column
là VARCHAR(100)
, chỉ mục trong ví dụ trên sẽ chỉ nằm trên 50 ký tự đầu tiên. Tìm kiếm dữ liệu vượt quá ký tự thứ 50 sẽ không thể sử dụng chỉ mục.