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

Có thể có chỉ mục dựa trên hàm trong MySQL không?

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ó 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).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khối lượng công việc kết hợp cơ sở dữ liệu OLTP / Analytics trong Galera Cluster bằng cách sử dụng các nô lệ không đồng bộ

  2. Plugin xác thực 'caching_sha2_password' không được hỗ trợ

  3. Lỗi Mysql 1452 - Không thể thêm hoặc cập nhật hàng con:ràng buộc khóa ngoại không thành công

  4. So sánh các giải pháp sao chép từ Oracle và MySQL

  5. Làm cách nào để ngăn chặn việc đưa SQL vào PHP?