Index fonctionnels MySQL : une comparaison avec Oracle
Dans Oracle, la possibilité de créer des index basés sur des fonctions, telles que SUBSTRING(id, 1,8), offre une flexibilité dans la récupération des données. Cependant, MySQL offre-t-il une fonctionnalité similaire ?
Limites de MySQL
Contrairement à Oracle, MySQL ne prend pas directement en charge les index basés sur des fonctions dans son sens traditionnel. Même en version 5.6, cette fonctionnalité n'est pas disponible. Cependant, les versions ultérieures, en particulier MySQL 8.0.13 et supérieures, introduisent des index fonctionnels, corrigeant cette limitation.
Pour les versions antérieures de MySQL, l'option permettant d'indexer une partie de début d'une colonne existe, mais pas les caractères suivants. . Par exemple, ce qui suit crée un index en utilisant les cinq premiers caractères d'une colonne de nom :
create index name_first_five on cust_table (name(5));
Approche alternative avec des déclencheurs
Pour des expressions plus complexes, les utilisateurs de MySQL peut utiliser des déclencheurs d'insertion/mise à jour pour créer une colonne distincte contenant les données indexables. Cela garantit que les données des deux colonnes restent synchronisées.
Bien que cette approche crée une redondance, elle imite les avantages en termes de performances d'un index basé sur des fonctions. Il est également conforme à 3NF, car les déclencheurs sont responsables du maintien de la cohérence des données.
En résumé, bien que MySQL ne prenne pas en charge nativement les index basés sur des fonctions comme Oracle, il fournit d'autres mécanismes pour obtenir des résultats similaires grâce à une indexation de caractères de premier plan. ou l'utilisation de déclencheurs et de colonnes supplémentaires.
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!