mysql peut créer des index conjoints. MySQL permet aux utilisateurs de créer un index commun contenant jusqu'à 16 colonnes. Il existe deux méthodes de création : 1. Créer lors de la création d'une table, la syntaxe "CREATE TABLE nom de la table (nom de colonne 1 type PRIMARY KEY, nom de colonne 2 type, nom de colonne 3 type, ...INDEX nom d'index (nom de colonne 2, nom de colonne 3...));"; 2. Créer lors de la modification de la table, la syntaxe "CREATE INDEX nom d'index ON nom de table (nom de colonne 2, nom de colonne 3, nom de colonne 4 );".
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
Qu'est-ce qu'un indice commun ? L'essence d'un index conjoint : l'index correspondant le plus à gauche sur deux colonnes ou plus est appelé index conjoint, et un index conjoint est également appelé index composite. MySQL permet aux utilisateurs de créer un index composite contenant jusqu'à 16 colonnes. Pour les index composites : Mysql utilise les champs de l'index de gauche à droite. Une requête ne peut utiliser qu'une partie de l'index, mais uniquement la partie la plus à gauche.
Par exemple, l'index est
. Il peut prendre en charge trois combinaisons de a | a, b | a, b, c pour la recherche, mais il ne prend pas en charge b, c pour la recherche. l'index est très efficace.L'optimiseur de requêtes utilise des index composites pour les requêtes qui testent toutes les colonnes de l'index, ou les requêtes qui testent la première colonne, les deux premières colonnes, etc. key index (a,b,c)
Un seul index composite peut accélérer ces types de requêtes sur la même table si vous spécifiez les colonnes dans le bon ordre dans la définition de l'index.
Syntaxe : CREATE TABLE 表名 (
c1 data_type PRIMARY KEY,
c2 data_type,
c3 data_type,
c4 data_type,
INDEX 索引名 (c2,c3,c4)
);
Vous pouvez ajouter un index composite à une table existante à l'aide de l'instruction CREATE INDEX suivante : CREATE INDEX 索引名
ON 表名(c2,c3,c4);
(c1) (c1,c2) (c1,c2,c3)
Par exemple :
SELECT * FROM table_name WHERE c1 = v1; SELECT * FROM table_name WHERE c1 = v1 AND c2 = v2; SELECT * FROM table_name WHERE c1 = v1 AND c2 = v2 AND c3 = v3;
Si les colonnes ne forment pas le préfixe le plus à gauche de l'index, l'optimiseur de requêtes ne peut pas utiliser l'index pour effectuer une recherche. Par exemple, la requête suivante ne peut pas être trouvée à l'aide de composites :
SELECT * FROM table_name WHERE c1 = v1 AND c3 = v3;
Exemple d'index syndical MySQL
Nous allons démontrer l'utilisation de la table des employés de l'exemple de base de données.
L'instruction suivante crée un index conjoint sur les colonnes lastName et firstName :CREATE INDEX name ON employees(lastName, firstName);
Tout d'abord, l'index de nom peut être utilisé pour les recherches dans les requêtes qui spécifient la valeur lastName, car la colonne lastName est le préfixe le plus à gauche de l'indice.
Deuxièmement, l'index de nom peut être utilisé pour interroger la valeur de la combinaison des valeurs lastName et firstName.
index de nom est utilisé pour rechercher dans les requêtes suivantes :
SELECT firstName, lastName, email FROM employees WHERE lastName = 'Patterson';
Cette requête utilise l'index de nom car le préfixe le plus à gauche de l'index (c'est-à-dire la colonne lastName) est utilisé pour la recherche.
Vous pouvez le vérifier en ajoutant la clause EXPLAIN à la requête :
EXPLAIN SELECT firstName, lastName, email FROM employees WHERE lastName = 'Patterson';
Voici le résultat :
2) Recherchez les employés portant le nom Patterson et le prénom Steve :SELECT firstName, lastName, email FROM employees WHERE lastName = 'Patterson' AND firstName = 'Steve';
Vérifions ça :
EXPLAIN SELECT firstName, lastName, email FROM employees WHERE lastName = 'Patterson' AND firstName = 'Steve';
Le résultat est :
3) Rechercher des employés dont le nom de famille est Patterson et dont le prénom est Steve ou Mary :SELECT firstName, lastName, email FROM employees WHERE lastName = 'Patterson' AND (firstName = 'Steve' OR firstName = 'Mary');
L'instruction suivante vérifie l'utilisation de l'index :
EXPLAIN SELECT firstName, lastName, email FROM employees WHERE lastName = 'Patterson' AND (firstName = 'Steve' OR firstName = 'Mary');
Le résultat est :
L'optimiseur de requête ne peut pas utiliser l'index de nom pour les recherches dans la requête suivante, car seule la colonne où firstName n'est pas le préfixe le plus à gauche de l'index est utilisé :SELECT firstName, lastName, email FROM employees WHERE firstName = 'Leslie';
SELECT firstName, lastName, email FROM employees WHERE firstName = 'Anthony' OR lastName = 'Steve';
【Recommandations associées :
tutoriel vidéo mysql】
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!