57 votes

Avantages de performance MySQL Enum?

Y a-t-il un avantage en termes de performances à utiliser enum dans des situations où il n’ya que 5 à 10 valeurs possibles différentes pour un champ? sinon quel est l'avantage?

53voto

Bill Karwin Points 204877

Il y a une énorme performance de pénalité à l'aide d' ENUM pour des opérations telles que:

  • Requête de la liste des valeurs autorisées dans l' ENUM, par exemple pour remplir un menu déroulant. Vous devez interroger le type de données INFORMATION_SCHEMA, et d'analyser la liste d'un champ BLOB retourné.

  • Modifier la série de valeurs autorisées. Il implique un ALTER TABLE déclaration, qui verrouille la table et peut procéder à une restructuration.

Je ne suis pas un fan de MySQL ENUM. Je préfère utiliser les tables de recherche. Voir aussi ma réponse à "Comment gérer les énumérations sans champs de type enum dans une base de données?"

28voto

John Douthat Points 28189

Les ENUM sont représentés en interne par un entier non signé de 16 bits. Si les chaînes que vous stockez ont une taille supérieure à 2 octets et changent rarement, un ENUM est la solution. La comparaison est plus rapide avec une énumération et prend moins de place sur le disque, ce qui peut conduire à des temps de recherche plus rapides.

L'inconvénient est que les enums sont moins flexibles pour ajouter / supprimer des valeurs.

13voto

Guillaume Gendre Points 713

Dans cet article http://fernandoipar.com/2009/03/09/using-the-enum-data-type-to-increase-performance/ Fernando regarde dans les représentations de type Enum pour les requêtes.

Le résultat est que lors de l'utilisation d'ENUM peut sembler un peu moins élégant à partir d'une conception de point de vue (si votre valeur d'ENUM sont en train de changer parfois), le gain de performances est évident pour les grands ensembles de données. Voir son article pour plus de détails. Êtes-vous d'accord?

1voto

Paul Grigoruta Points 1467

Non, voir une comparaison ici

L'avantage réside dans la lisibilité du code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X