Gestion des indexes

Vidéo non disponible ! Réessayez plus tard
Cette vidéo fait partie de la formation
Apprendre MySQL 8.0 par la pratique
Revoir le teaser Je m'abonne
Transcription

Cette leçon fait partie de la formation
89,00€ Je commande

Formation incluse dans l'abonnement Elephorm Je m'abonne à Elephorm

DescriptionProgrammeAvis

Cette leçon fait partie de la formation
89,00€ Je commande

Formation incluse dans l'abonnement Elephorm Je m'abonne à Elephorm

Être capable de créer et exploiter une base de données MySQL au quotidien de manière autonome.

Cette formation a été conçue à destination d'un public sans connaissances préalables sur les bases de données, avec l'ambition de transmettre les notions fondamentales permettant d'entrer sereinement et efficacement dans l'univers des bases de données, et d'exploiter MySQL au quotidien de manière autonome.

Elle permet de tirer parti de logiciels de qualité conçus spécialement pour travailler avec les bases de données : MySQL Workbench et Datagrip.

Elle met l'accent sur la pratique, et comprend de nombreuses démonstrations, mises en situations, exercices corrigés et commentés.

Elle met à disposition en ressources téléchargeables 3 bases de données portant sur des thèmes variés (médicaments vétérinaires, sécurité routière, prénoms), les scripts SQL des démonstrations les plus longues, et intègre un code promotionnel vous permettant de bénéficier d'une prolongation à 4 mois de la période d'essai gratuite de Datagrip.

Voir plus
Dans cette vidéo, on va s'intéresser à la création d'index dans une table. Il existe de nombreux types d'index, ceux qui s'appliquent aux clés primaires, ceux qui s'appliquent aux champs de type texte, les index uniques, spatiaux, full text. On va s'intéresser plus particulièrement aux trois premiers dans cette vidéo. Alors, globalement, qu'est-ce qu'un index dans une base de données et pourquoi on le crée ? C'est exactement la même chose que dans un livre. Grosso modo, un index dans un livre vous permettra de trouver l'information beaucoup plus rapidement que si vous parcouriez le livre page par page. Et il est d'autant plus intéressant que le livre est épais. Globalement, c'est la même chose dans une base de données. Si l'on crée un index, par exemple, sur la colonne nom d'une table médicaments, et bien ça nous permettra de trouver le médicament par son nom beaucoup plus rapidement que si on demandait à la base de données de parcourir la table enregistrement par enregistrement pour trouver le médicament par son nom. Et c'est d'autant plus intéressant qu'on a un nombre important de médicaments dans cette table. Donc, on va montrer comment est-ce qu'on peut créer un index sur une colonne. On les utilise dans ce contexte-là, plus volontiers sur des colonnes de type CAR, VARCAR ou TEXT. Et l'instruction qu'on exécute pour créer cet index est la suivante. On utilise INDEX ou KEY, suivi du nom qu'on attribue à notre index, suivi de LA ou LES colonnes qui sont concernées par cet index. Ici, je souhaite créer un index sur la colonne NOM uniquement, mais j'aurais très bien pu ajouter une autre colonne derrière si j'avais voulu créer un index composite. Il faut savoir qu'on est aussi en mesure de créer un index sur un certain nombre de caractères d'une colonne. Par exemple, si j'indique ici 5, je crée un index sur les 5 premiers caractères de la colonne NOM. C'est facultatif pour les colonnes de type CAR ou VARCAR, mais ça devient indispensable pour les colonnes de type TEXT et ANALOG. Une fois qu'on a déclaré toutes nos colonnes, on met une virgule et on indique cette instruction pour créer l'index. Là, je crée simplement une table MEDOC2 qui va contenir deux colonnes et un index sur la colonne NOM. Je peux m'assurer ici que cette table est bien créée et qu'elle comporte l'index que j'attendais. Je peux aussi utiliser l'instruction SHOW INDEX FROM MEDOC2 pour afficher la liste des index sur la table MEDOC2. Si j'exécute cette instruction, je vois que j'ai effectivement l'index tel que je l'attendais. Je vais supprimer cette table pour vous montrer qu'il existe une autre manière de créer un index à postériori. C'est cette instruction CREATE INDEX ou CREATE KEY suivi du nom de l'index ON le nom de la table, suivi entre parenthèses de la liste des colonnes qui sont concernées par cet index. Bien sûr, ça implique que je commente ici la création de l'index au moment de la création de la table. Donc là, je crée une table. Cette table ne contient plus d'index comme je peux ici m'en assurer. Je peux créer l'index à postériori et vérifier que cet index a bien été créé. D'une manière générale, créer des index sur les colonnes de type CAR, VARCAR, notamment sur les colonnes qui sont régulièrement utilisées dans des clauses WHERE. C'est d'autant plus intéressant que la table contient un nombre important d'enregistrements. Il faut savoir que la création d'un index a potentiellement un coût et qu'il doit être mis à jour à chaque fois que les données de cette colonne changent. Donc si l'index porte sur une colonne qui est très souvent mise à jour, cela peut à terme pénaliser les performances de la base de données. Il faut l'avoir en tête. A l'inverse, cela n'a pas forcément de sens de créer un index sur une table qui contient très peu d'enregistrements. Il faut savoir qu'on peut ajouter un certain nombre d'index dans une table, jusqu'à 16. Cependant, en général, on n'en met pas autant. Il y a un index très particulier dans une table qui est ce qu'on appelle la clé primaire. On va s'intéresser à cette clé primaire tout de suite. D'abord, je supprime cette table. La clé primaire est une colonne dans la table qui identifie de manière unique chaque enregistrement. Une clé primaire est forcément note nulle et unique. L'index associé à la clé primaire porte toujours le nom Primary. Pour créer une clé primaire, on a plusieurs possibilités. Soit on la crée au niveau colonne, soit on la crée après la déclaration des colonnes, soit même on peut la créer après avoir créé la table, à la manière d'un index quelconque. Je vous montre les trois possibilités sur cette table Medoc2. Ici, j'ai la déclaration d'une clé primaire au niveau colonne. On la déclare avec le mot-clé Primary Key ou simplement Key. Autant être explicite. On va utiliser Primary Key, auquel cas l'index concerne uniquement cette colonne-là. On ne peut pas déclarer une clé primaire qui porterait sur plusieurs colonnes en utilisant la syntaxe de niveau colonne. Effectivement, dans la plupart des cas, la clé primaire concerne une colonne, mais elle peut aussi s'appliquer à plusieurs colonnes. Si ça devait être le cas, il faut utiliser la syntaxe qui définit la clé primaire à la fin, après la liste de toutes les colonnes de la table. Notez qu'il ne peut y avoir qu'une seule clé primaire par table. Si toutefois on avait besoin d'avoir un autre enregistrement qui identifie de manière unique chaque enregistrement de la table, ce qu'on appelle une clé candidate dans ce cas-là ou une clé métier par exemple, on pourrait définir un index non-nul unique sur une deuxième colonne de la table. C'est ce qu'on verra après les clés primaires. Si je crée cette table, je vois qu'elle apparaît de nouveau ici et que j'ai à la fois un enregistrement qui s'est mis dans la section Keys et un autre dans Indexes. On voit que cet enregistrement, cette entrée, porte le nom Primary qui est le nom que MySQL attribue à l'index qui fait figure de clé primaire dans la table. Je vais supprimer cette table pour vous montrer qu'il est possible de créer une clé primaire non pas au niveau colonne mais au niveau table. Dans ce cas, il faut utiliser l'instruction suivante Constraint suivie du nom qu'on veut donner à cette Constraint suivie de Primary Key. Notez que cette section est optionnelle et que dans tous les cas, MySQL attribuera Primary Key comme nom à notre clé primaire. On peut se contenter d'utiliser Primary Key. Notez qu'on peut aussi créer ici une clé primaire qui porterait sur plusieurs colonnes. Ici, je ne veux créer qu'une table, qu'une clé primaire portant sur la colonne ID donc je la crée de la manière suivante. Je peux donc m'assurer que j'ai exactement la même chose qu'auparavant. Je ne vais pas le faire mais sachez qu'il est possible de créer une clé primaire à posteriori après avoir créé une table pour peu qu'au moment où on déclare la table on n'ait pas spécifié qu'elle devait contenir une clé primaire. Si par exemple, j'avais exécuté ce code-là, j'aurais pu après exécuter l'instruction Alter Table avec le nom de la table suivi de Add Primary Key et entre parenthèses le nom de la ou les colonnes concernées par la clé primaire et ça m'aurait rajouté de la même manière une clé primaire sur cette colonne-là. Je souhaitais revenir faire une petite parenthèse sur les clés primaires qui sont auto-incrémentées. On a utilisé cette fonctionnalité à plusieurs reprises dans nos vidéos jusqu'ici. Une colonne auto-incrémentée, c'est une colonne qui est de type entier et à laquelle MySQL va ajouter une unité à chaque fois qu'on rajoute un enregistrement dans la table. C'est forcément une colonne qui est indexée ou qui fait l'objet d'une clé primaire et elle ne peut pas contenir de valeur par défaut. La syntaxe de déclaration est la suivante, on rajoute auto-incrémente devant le mot-clé Primary Key. Notez que par défaut, MySQL utilise 1 comme valeur pour le premier enregistrement, puis 2 pour le second, etc. Mais qu'on peut choisir la valeur de départ. Ici, en indiquant auto-increment égal 10 après la parenthèse fermante, je spécifie que je souhaite que l'on commence à 10. J'ai supprimé la table Medoc, donc je peux la créer à nouveau. Et cette fois-ci, j'ai dans cette table une clé primaire qui est auto-incrémentée. Cela veut dire que je n'aurai pas besoin de renseigner de valeur, et je ne devrais pas d'ailleurs renseigner de valeur pour ce champ, c'est MySQL qui va s'en occuper automatiquement. Dans ce contexte, cela peut être intéressant d'avoir une clé candidate qui a une valeur sémantique particulière pour l'utilisateur, contrairement à un ID qui est quelque chose de purement informationnel. Je peux donc insérer dans cette table 2 enregistrements, et voir que l'index ID a une valeur qui commence bien à 10 dans le premier enregistrement, puis 11. Il faut savoir qu'on a la possibilité de modifier à la volée la valeur que MySQL va prendre en compte pour l'auto-incrément dans les enregistrements à venir. Ici, c'est ce que je fais en précisant avec cette instruction alter table Medoc2 auto-increment égale 100. Je spécifie que pour le prochain enregistrement, il faudra partir de la valeur 100 pour la colonne ID. Si j'exécute ces trois instructions, je vois dans mes résultats qu'il y a une rupture de continuité dans les valeurs attribuées à cet ID, et qu'à partir du troisième enregistrement, on est bien sur la valeur C. Un détail sur l'auto-incrément, c'est lorsque l'on supprime des enregistrements dans notre table. Selon que l'on utilise l'instruction DELETE ou TRUNCATE, le résultat ne va pas être tout à fait le même. Dans les deux cas, on va purger notre table de ses enregistrements, mais lorsqu'on utilise DELETE, on ne va pas réinitialiser l'auto-incrément, alors que lorsqu'on utilise TRUNCATE, il va être réinitialisé. On peut s'en assurer par exemple en exécutant ces instructions. Ici, j'ai purgé ma table en utilisant DELETE, et je vois que lorsque je réinsère de nouveau des enregistrements, l'index ID est bien initialisé à 102, 103, c'est-à-dire dans la continuité des valeurs précédentes. Si je procède de la même manière, mais cette fois-ci en utilisant TRUNCATE, l'index est reparti à 1. C'est quelque chose à avoir en tête lorsqu'on purge une table. On va supprimer une nouvelle fois cette table pour se focaliser sur les index uniques. Un index unique, c'est un index qui ne peut accepter que des valeurs différentes dans les enregistrements. Par exemple, si ici je mets un index unique sur la colonne NOM, il ne pourra pas y avoir dans ma table deux médicaments qui portent le même nom. Pour le faire, j'utilise UNIQUE KEY au niveau colonne, ou simplement UNIQUE. Je peux aussi déclarer un index unique en utilisant une déclaration de niveau table avec cette instruction CONSTRAINT suivie du nom de l'index unique, UNIQUE INDEX suivie du nom de la ou les colonnes qui sont concernées par cet index unique. Comme pour l'index qu'on a vu précédemment, on peut indiquer un nombre ici, entre parenthèses, pour spécifier le nombre de caractères de la colonne NOM qui doivent être concernés par cet index unique. C'est complètement optionnel. On a aussi la possibilité de créer un index unique à postériori une fois la table créée en utilisant l'instruction CREATE UNIQUE INDEX suivie du nom de l'index ON le nom de la table et entre parenthèses les colonnes concernées par cet index unique. Si j'exécute cette instruction, je vais avoir de nouveau ma table Medoc2 qui va être créée. Je vois que je vais avoir deux clés ici, la clé primaire et l'index unique que j'ai créé qui est considérée comme une clé candidate. C'est pour ça qu'elle apparaît dans la rubrique Clé qui. Ensuite, j'ai deux index. J'ai l'index unique NOM et j'ai l'index porté par la clé primaire. Remarquez ici qu'on sait que ces index sont uniques parce qu'on a aussi un picto qui le mentionne.

Programme détaillé

Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Unions 06:39
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Nos dernières formations Code & Data
  • Nouveau
    Maîtriser FlutterFlow - De l'Idée à l'Application
    Découvrir
    Cette formation en FlutterFlow est l'outil idéal pour tout développeur souhaitant créer des applications mobiles robustes et interactives sans coder de manière complexe. Grâce à des modules complets et structurés, vous apprendrez à utiliser FlutterFlow et Firebase, à sécuriser vos données, à concevoir des interfaces utilisateur élégantes et à intégrer des API telles qu'OpenIA. Rejoignez-nous pour transformer vos idées en applications innovantes et performantes.
    4h08 57 leçons
  • Nouveau
    Webflow - Créer la landing Page d'OpenAI
    Découvrir
    À l'issue de cette formation, les participants seront capables de créer de manière autonome une landing page sophistiquée, similaire à celle d'OpenAI, en utilisant les fonctionnalités avancées de Webflow pour le design responsive et les interactions.
    3h48 19 leçons
  • Apprendre Svelte 3 et SvelteKit 1.0
    Découvrir
    Créez des applications web modernes et ultra-rapides avec notre formation "Apprendre Svelte 3 et SvelteKit 1.0". Rejoignez-nous et devenez un expert du développement JavaScript ! 🚀 #Svelte #SvelteKit #DéveloppementWeb
    7h42 77 leçons
  • Apprendre Vue JS 3
    Découvrir
    Apprenez à créer des applications web modernes avec notre formation "Apprendre Vue JS 3". Rejoignez-nous et maîtrisez ce puissant framework JavaScript ! 🚀 #VueJS #FormationWeb #Développement
    11h47 91 leçons
  • Gratuit
    Apprendre ChatGPT
    Découvrir
    Ce cours vise à fournir une compréhension approfondie de l'intelligence artificielle, en se concentrant sur l'utilisation pratique de ChatGPT et DALL-E. Les participants découvriront comment l'IA peut transformer des domaines variés tels que le marketing, le développement web, et le design graphique. Le contenu couvre les bases de l'IA, l'art de créer des prompts efficaces, l'utilisation de plugins avancés, et le codage assisté par IA. Des projets pratiques permettront d'appliquer ces connaissances dans des scénarios réels. Destiné aux professionnels de la technologie, aux marketeurs, aux développeurs, et à toute personne intéressée par l'IA, ce cours est une opportunité d'acquérir des compétences innovantes et applicables dans divers contextes professionnels et créatifs. Les prérequis incluent une compréhension basique de l'informatique et un intérêt pour l'IA. Le cours promet une aventure d'apprentissage enrichissante, ouvrant de nouvelles perspectives dans l'utilisation de l'intelligence artificielle.
    3h12 30 leçons

éditeur de vidéos pédagogiques

Des supports pédagogiques en vidéo, produits avec les meilleurs experts. Dans nos studios à Paris, Lyon ou Montpellier. Vous souhaitez travailler avec nous ?
image-micro