Maison > base de données > tutoriel mysql > Pourquoi mon index MySQL est-il trop long et comment puis-je y remédier ?

Pourquoi mon index MySQL est-il trop long et comment puis-je y remédier ?

Patricia Arquette
Libérer: 2025-01-02 22:57:38
original
197 Les gens l'ont consulté

Why is My MySQL Index Too Long, and How Can I Fix It?

Comprendre la contrainte de longueur d'index MySQL

Lors de l'exécution des commandes fournies dans la question, une erreur est rencontrée car une clé d'index est également long. La longueur de clé maximale autorisée par MySQL est de 1 000 octets.

Causes de l'erreur

L'erreur se produit car la définition d'index dans la tentative de migration pour la gem 'acts_as_tagable_on' crée un index avec trois champs : taggable_id, taggable_type et context. La combinaison de ces champs dépasse la limite de 1000 octets.

Solution

Pour résoudre l'erreur, il est nécessaire de comprendre les points suivants :

  • Moteurs de stockage MySQL : MySQL utilise différents moteurs de stockage, chacun avec des limitations d'index différentes. MyISAM a une limite de 1 000 octets, tandis qu'InnoDB a une limite de 767 octets.
  • Impact du type de données : Le type de données des colonnes indexées affecte la taille de l'index. Pour les colonnes VARCHAR, la taille réelle de l'index sera trois fois la taille déclarée de la colonne. Par conséquent, un index sur une colonne VARCHAR(100) consommera 300 octets.
  • Index partiel : Pour surmonter la contrainte de longueur d'index, des index partiels peuvent être créés. Les index partiels limitent l'index à une partie du type de données.

Exemple :

Pour créer un index sur les 50 premiers caractères uniquement de votre_colonne ', la syntaxe suivante peut être utilisé :

CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))
Copier après la connexion

Remarque :

  • Les index partiels limiteront l'efficacité de l'index pour les recherches au-delà de la partie spécifiée.
  • Pour le cas spécifique mentionné dans la question, il peut être conseillé d'envisager d'utiliser une base de données différente avec des limites de longueur d'index plus souples, telles que PostgreSQL.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal