Index basés sur des fonctions dans MySQL
Contrairement à Oracle, MySQL ne prend pas automatiquement en charge les index basés sur des fonctions. Cependant, il existe des alternatives à considérer.
Partie de début d'une colonne
MySQL vous permet d'indexer la partie de début d'une colonne en utilisant la syntaxe suivante :
create index name_first_five on cust_table (name(5));
Cela crée un index en utilisant les cinq premiers caractères de la colonne "nom".
Déclencheurs et Colonnes supplémentaires
Pour des fonctions plus complexes, vous pouvez créer une colonne distincte avec les données indexées et utiliser des déclencheurs d'insertion/mise à jour pour garantir son remplissage correct.
Exemple
Considérons un scénario dans lequel vous souhaitez indexer une sous-chaîne d'une colonne. Vous pouvez créer une nouvelle colonne et utiliser des déclencheurs comme suit :
ALTER TABLE cust_table ADD COLUMN substring VARCHAR(255); CREATE TRIGGER update_substring AFTER INSERT OR UPDATE ON cust_table FOR EACH ROW SET NEW.substring = SUBSTRING(NEW.id, 1, 8);
Comparaison avec les index fonctionnels
Bien que cette approche produise un effet similaire à celui des index fonctionnels, elle introduit redondance supplémentaire des données. Cependant, il permet également de définir des fonctions plus complexes et assure la cohérence des données grâce à des déclencheurs.
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!