Không, không phải theo nghĩa chung, tôi không tin rằng ngay cả 5.6 (phiên bản mới nhất khi câu trả lời này được viết lần đầu tiên) có chức năng này. Cần lưu ý rằng 8.0.13 trở lên hiện hỗ trợ chỉ mục chức năng , cho phép bạn đạt được những gì bạn cần mà không cần phương pháp kích hoạt được mô tả bên dưới.
Nếu bạn đang chạy phiên bản cũ hơn của mysql
, nó là có thể chỉ sử dụng hàng đầu một phần của cột (chức năng này đã có từ lâu), nhưng không phải là một phần bắt đầu từ ký tự thứ hai hoặc các ký tự tiếp theo hoặc bất kỳ chức năng nào khác phức tạp hơn.
Ví dụ:phần sau tạo chỉ mục bằng cách sử dụng năm ký tự đầu tiên của tên:
create index name_first_five on cust_table (name(5));
Đối với các biểu thức phức tạp hơn, bạn có thể đạt được hiệu ứng tương tự bằng cách có khác với dữ liệu có thể lập chỉ mục trong đó, sau đó sử dụng trình kích hoạt chèn / cập nhật để đảm bảo nó được điền chính xác.
Ngoài không gian lãng phí cho dữ liệu dư thừa, đó là điều tương tự.
Và, mặc dù về mặt kỹ thuật vi phạm 3NF, điều đó được giảm nhẹ bằng cách sử dụng trình kích hoạt để giữ cho dữ liệu được đồng bộ hóa (đây là điều thường được thực hiện để tăng hiệu suất).