Indexation basée sur les fonctions dans MySQL
Dans les bases de données Oracle, il est possible d'indexer des données en fonction d'une fonction, comme l'extraction d'une sous-chaîne à partir d'une colonne utilisant SUBSTRING(id,1,8). Cette fonctionnalité pratique soulève la question de savoir si MySQL offre des fonctionnalités similaires.
Approche de MySQL
MySQL ne prend pas en charge l'indexation basée sur les fonctions au sens traditionnel. Même les dernières versions de MySQL, dont la 5.6, ne disposent pas de cette fonctionnalité. Cependant, les versions récentes telles que MySQL 8.0.13 et supérieures introduisent des index fonctionnels, permettant une indexation flexible basée sur des fonctions et des expressions.
Alternatives pour les anciennes versions de MySQL
Pour Dans les versions MySQL antérieures à 8.0.13, les options d'indexation basées sur les résultats des fonctions sont limitées. MySQL prend en charge l'utilisation de caractères de début dans une colonne pour l'indexation, mais il ne peut pas gérer des expressions plus complexes ni partir d'une position de caractère spécifique.
Pour contourner cette limitation, vous pouvez créer une colonne distincte contenant les données indexables. et utilisez des déclencheurs pour maintenir sa synchronisation avec la colonne d'origine. Bien qu'il ne soit pas strictement conforme aux principes de normalisation des bases de données, il obtient un effet similaire en gardant les données synchronisées via des déclencheurs.
Conclusion
Bien que MySQL ne fournisse pas de prise en charge de l'indexation basée sur les fonctions, l'introduction d'index fonctionnels dans MySQL 8.0.13 et supérieur offre une solution à ce besoin. Pour les anciennes versions, l'utilisation d'une colonne indexée distincte avec des déclencheurs peut émuler la fonctionnalité des index basés sur des fonctions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!