Function-Based Indexing in MySQL
In Oracle databases, it is possible to index data based on a function, such as extracting a substring from a column using SUBSTRING(id,1,8). This convenient feature raises the question of whether MySQL offers similar functionality.
MySQL's Approach
MySQL does not support function-based indexing in the traditional sense. Even the latest versions of MySQL, including 5.6, lack this capability. However, recent releases such as MySQL 8.0.13 and above introduce functional indexes, allowing for flexible indexing based on functions and expressions.
Alternatives for Older MySQL Versions
For MySQL versions prior to 8.0.13, there are limited options for indexing based on function results. MySQL supports the use of leading characters in a column for indexing, but it cannot handle more complex expressions or starting from a specific character position.
To work around this limitation, you can create a separate column containing the indexable data and use triggers to maintain its synchronization with the original column. While it is not strictly compliant with database normalization principles, it achieves a similar effect by keeping the data in sync through triggers.
Conclusion
While MySQL does not provide direct support for function-based indexing, the introduction of functional indexes in MySQL 8.0.13 and above offers a solution for this need. For older versions, the use of a separate indexed column with triggers can emulate the functionality of function-based indexes.
The above is the detailed content of Does MySQL Support Function-Based Indexing?. For more information, please follow other related articles on the PHP Chinese website!