Maison  >  Article  >  base de données  >  Explication détaillée des différences entre KEY et PRIMARY KEY et UNIQUE KEY et INDEX dans MySQL

Explication détaillée des différences entre KEY et PRIMARY KEY et UNIQUE KEY et INDEX dans MySQL

黄舟
黄舟original
2017-07-26 15:37:292308parcourir

Ce que cet article partage avec vous, c'est la différence entre KEY, PRIMARY KEY, UNIQUE KEY et INDEX dans l'index mysql, c'est-à-dire la différence entre l'index de clé primaire, l'index unique et l'index ordinaire. J'espère que vous pourrez l'aimer

Pour la question Les problèmes soulevés peuvent être décomposés et résolus étape par étape. KEY et INDEX sont synonymes dans MySQL. Ensuite, ce problème peut être simplifié à la différence entre PRIMARY KEY, UNIQUE KEY et INDEX. Et ces trois sont exactement les divisions des index, index de clé primaire, index unique et index ordinaire (INDEX).

Utilisez INDEX pour accélérer la lecture des données de la base de données. INDEX est généralement ajouté à ces colonnes dans les clauses JOIN, WHERE et ORDER BY.

Lors de la création d'un index, vous devez vous assurer que l'index est une condition appliquée à l'instruction de requête SQL (généralement comme condition de la clause WHERE). En fait, l'index est également une table qui enregistre la clé primaire et les champs d'index et pointe vers les enregistrements de la table d'entités.

L'index a aussi ses inconvénients : bien que l'index augmente la vitesse des requêtes, il réduira la vitesse de mise à jour de la table, comme INSERT, UPDATE et DELETE sur la table. Parce que lors de la mise à jour de la table, MySQL doit non seulement enregistrer les données, mais également enregistrer le fichier d'index.

La différence entre KEY et INDEX dans MySQL

KEY est généralement synonyme d'INDEX. PRIMARY KEY peut également être spécifié comme KEY uniquement si l'attribut de mot-clé PRIMARY KEY est donné dans la définition de la colonne. Ceci est fait pour des raisons de compatibilité avec d'autres systèmes de bases de données. PRIMARY KEY est une clé unique. À ce stade, toutes les colonnes clés doivent être définies comme NOT NULL. Si ces colonnes ne sont pas explicitement définies comme NOT NULL, MySQL doit définir ces colonnes implicitement.

KEY est la valeur de clé, qui fait partie de la théorie du modèle relationnel, telle que la clé primaire (PRIMARY KEY), la clé étrangère (Foreign KEY), etc., utilisée pour la vérification de l'intégrité des données et les contraintes d'unicité, etc. . INDEX est au niveau de l'implémentation. Par exemple, vous pouvez créer un index sur n'importe quelle colonne d'une table. Ensuite, lorsque la colonne indexée est dans la condition Where dans l'instruction SQL, vous pouvez obtenir un emplacement rapide des données et donc une récupération rapide. Quant à UNIQUE INDEX, ce n'est qu'un type d'INDEX. La création d'UNIQUE INDEX signifie que les données de cette colonne ne peuvent pas être répétées. Je suppose que MySQL peut optimiser davantage l'index de type UNIQUE INDEX.

Par conséquent, lors de la conception de la table, la KEY doit uniquement être au niveau du modèle, et lorsqu'une optimisation des requêtes est requise, des index peuvent être créés sur les colonnes pertinentes.

KEY

KEY est la structure physique de la base de données, qui contient deux niveaux de signification. L'un est celui des contraintes, qui se concentre sur la contrainte et la standardisation de l'intégrité structurelle de la base de données. base de données, et l'autre est la requête auxiliaire.

•La clé primaire a deux fonctions. L'une est la contrainte, qui est utilisée pour normaliser la clé primaire de stockage et l'unicité, mais crée également un index sur cette clé
•La clé unique en a également deux. La première fonction est la contrainte, qui régule l'unicité des données, mais elle établit également un index sur cette clé ;
•la clé étrangère a également deux fonctions, l'une est contrainte, qui régule l'unicité de l'intégrité de la référence, mais un index est également établi sur celle-ci. key;

On voit que la clé a le sens à la fois de contrainte et d'index

INDEX

INDEX est aussi la structure physique de. la base de données, mais elle ne sert que de requête auxiliaire. Elle occupera un espace supplémentaire lors de sa création. Les index sont divisés en index de préfixe, index de texte intégral, etc. Un index n'est qu'un index et ne contraint pas le comportement des champs indexés.

La différence entre PRIMARY KEY et UNIQUE KEY

PRIMARY KEY (clés primaires) et UNIQUE KEY (contraintes de clé unique) sont généralement similaires. mais c'est aussi possible Plusieurs colonnes, déterminent généralement une ligne de données (ligne). Une table ne peut avoir qu’une seule CLÉ PRIMAIRE, mais peut avoir plusieurs CLÉS UNIQUES. Lorsqu'une colonne est définie sur UNIQUE KEY, deux lignes ne peuvent pas contenir les mêmes données dans cette colonne. PRIMARY KEY n'autorise pas les valeurs NULL, contrairement à UNIQUE KEY.

Modifier le tableau

`ALTER TABLE table_name ADD PRIMARY KEY(column_name, …)

Résumé, les mêmes points :

• PRIMARY KEY et UNIQUE KEY sont toutes deux utilisées pour garantir que les données de la colonne sont un prototype
• Les deux peuvent être dans une colonne Ou ajouter

à plusieurs colonnes. Différences :

•Il ne peut y avoir qu'une seule CLÉ PRIMAIRE dans la même table, et il peut y avoir plusieurs CLÉS UNIQUES
• PRIMARY KEY ne peut pas avoir de valeurs nulles, UNIQUE KEY Oui. Si une ou plusieurs colonnes de PRIMARY KEY sont NULL, les colonnes sont automatiquement remplacées par NOT NULL lors de l'augmentation de PRIMARY KEY. UNIQUE KEY n'a aucune exigence pour les colonnes et est implémenté via un index de référence. Si les valeurs insérées sont toutes NULL, alors selon le principe de l'index, toutes les valeurs NULL ne seront pas enregistrées dans l'index, donc lors de l'insertion. toutes les valeurs NULL, il peut y avoir des doublons. D'autres ne peuvent pas insérer de valeurs en double.

alter table t add constraint uk_t_1 UNIQUE (a,b); insérer dans t (a ,b ) valeurs ​​(null,1); # Impossible d'insérer à plusieurs reprises dans t (a ,b ) valeurs ​​​(null,null );#Peut être répété

Dans MySQL, pour une colonne PRIMARY KEY, MySQL a automatiquement établi un INDEX UNIQUE pour celle-ci, et il n'est pas nécessaire de créer à plusieurs reprises un index dessus.

Une explication sur PRIMARY KEY et UNIQUE INDEX sur Internet :

Notez que « PRIMARY » est appelé PRIMARY KEY et non INDEX
KEY est quelque chose au niveau logique, décrit la conception de votre table et de votre base de données (c'est-à-dire qu'il applique l'intégrité référentielle …)
INDEX est quelque chose au niveau logique. niveau physique, permet d'améliorer le temps d'accès pour les opérations sur les tables.
Derrière chaque PK, il y a (généralement) UN INDEX UNIQUE créé (automatiquement)La création de fichiers d'index prend de l'espace disque.
CREATE INDEX IndexName ON mytable(username(length));

S'il est de type CHAR, VARCHAR, la longueur peut être inférieure à la longueur réelle du champ s'il est de type BLOB et TEXT, length ; doit être précisé. Créer un index lors de la création d'une table :


Supprimer l'index

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!

Déclaration:
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