Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

SQL Server 2016 pour les administrateurs IT

Assimiler l'indexation

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Pour que les requêtes soient rapides, il faut créer des index. Ici, vous découvrirez ce qu'est un index et comment il se présente dans SQL Server.
06:17

Transcription

Nous parlons de la façon dont fonctionne SQL serveur. Une de ses missions principales bien entendu est de répondre aux requêtes des utilisateurs, c'est-à-dire des requêtes SQL, donc voici un exemple. Ici un Select simplement demande l'intégralité de la table. Bien entendu la plupart du temps on va faire une recherche dans les tables et on va utiliser la Clause SQL Where. Par exemple je voudrais tous les contacts dont le nom est égal à, on va prendre « lacroix » ici, on trouve 93 lignes. Comment SQL serveur fait-il cette recherche ? Historiquement le langage SQL qui a été créé dans les années 80, c'est un langage qui est assez au niveau. C'est un langage déclaratif, en plus on déclare le résultat qu'on veut obtenir, on n'indique pas comment il faut effectuer la recherche. On dit simplement qu'on veut effectuer une recherche. C'est bien entendu le moteur SQL qui doit lui décider d'une stratégie d'exécution, ce qu'on appelle un Plan d'exécution. On peut d'ailleurs le voir graphiquement dans SQL serveur. Ici j'ai fait un Contrôle L et j'aurais pu appuyer sur ce bouton « Afficher le plan d'exécution ». Il s'agit ici d'une représentation graphique de la stratégie que le moteur SQL va développer. Cette stratégie est déterminée par un moteur d'optimisation qui va la déconstruire et chercher la meilleure stratégie, le meilleur plan d'exécution. Pour chercher cette stratégie il lui faut connaître un certain nombre de choses au sujet des tables. Ça on va en reparler. Cela dit dans ce genre de requêtes il n'y pas 36 solutions. Vous avez la possibilité de parcourir la table toute entière et de tester tous les noms. Ou bien comment pourriez-vous faire ? Vous pourriez avoir une stratégie basée sur la présence d'un index sur la colonne Nom. L'index est quelque chose qui va se rajouter dans la structure physique des tables de façon à représenter une ou plusieurs colonnes dans un arbre de recherches. Au lieu de parcourir l'intégralité des valeurs on peut utiliser une représentation en arbre de décisions pour faire ce qu'on appelle une recherche dichotomique. Simplement si j'ai tous les noms et qu'ils sont ordonnés, je peux comme par exemple dans un dictionnaire découper ma recherche en division binaire ou non binaire. Admettons que je recherche « lacroix » dans un annuaire téléphonique. Qu'est-ce que je vais faire ? Je ne vais bien entendu pas commencer à la première page. Je ne vais pas parcourir l'intégralité de l'annuaire page après page. Je vais le prendre par exemple au milieu, je vais l'ouvrir et je vais déterminer si je suis à proximité ou non de la lettre L. Et en ouvrant mon annuaire téléphonique au milieu j'ai eliminé 50% de la recherche à effectuer. C'est ce qu'on appelle une recherche dichotomique. Donc, l'index est une représentation en arbre de recherches. c'est une structure de données en informatique qui va permettre de favoriser les recherches. Donc, les index sont présents dans SQL serveur, on peut les créer sur des colonnes et on peut les voir ici, si je vais dans Base de données PachaDataFormation, si je vais dans ma table Contact. Ici j'ai un certain nombre d'informations sur ma table. J'ai bien sûr les Colonnes, les Clés, Clés primaires, Clés étrangères. Les Contraintes que j'ai pu poser, par exemple des contraintes d'unicité ou des contraintes de type check, vérifier si telle ou telle valeur est permise dans une colonne. On a la notion de Déclencheurs. Ce sont des parties de code qui peuvent être posées sur des tables et qui vont, comme leur nom l'indique, se déclencher. Donc, ce sont des modules de code qu'on peut faire déclencher à l'insertion, à la modification ou à la suppression de données, par exemple pour vérifier des contraintes un peu plus précises ou un peu plus spéciales que dans les contraintes intégrées. Et ici enfin les index. Donc, on voit que j'ai un index que j'ai nommé nix_Contact_Nom, Nix pour non cluster d'index. Il y a deux types d'index dans SQL serveur, on ne va pas entrer dans les détails. Et si je double clique je vois que j'ai indexé le nom. Donc, j'ai créé une structure en arbre sur le nom que je vais pouvoir utiliser pour la recherche. Ici si je cherche, je vais regarder ce que j'ai comme possibilité, ici « feragotto » parce que je sais qu'il y en a peu. Si je regarde mon Plan d'exécution, je vois que j'ai ici une recherche d'index. Et donc, cette recherche si on regarde l'icône, on voit qu'on a une flèche qui descend à travers un arbre. C'est la recherche à travers mon index. Et grâce a cet index j'ai optimisé cette requête. Vous avez vu néanmoins que si je cherche « lacroix » le Plan d'exécution n'est pas le même parce que le moteur d'optimisation a besoin de savoir à peu près combien il ya de résultats qui vont être retournés de façon à choisir sa stratégie. Si je regarde mon « feragotto », le reprends. Combien est-ce que j'ai de résultats ? Un seul. Si je prends « lacroix » combien ai-je de résultats ? 93. « Feragotto » un seul résultat, c'est intéressant de passer dans un index parce qu'on fait la recherche une fois. On fait la recherche une fois aussi quand on cherche « lacroix », mais on trouve dans l'arbre 93 références. Et ensuite il faut aller chercher dans la table elle-même à l'aide de référence, si vous voulez on pourrait dire de pointeur mais plutôt de référence. On va aller chercher dans la table elle-même 93 lignes d'informatins. Et ça ça commence à devenir un petit peu coûteux par rapport à la taille de la table. Et l'optimiseur choisit à ce moment-là une stratégie basée sur le parcours de la table au lieu de chercher à travers l'index. Donc, voyez il y a quand même une assez forte subtilité de l'optimiseur qui doit prendre des décisions et c'est quand même un module de code très important dans les moteurs de base de données relationnelles. L'indexation est quelque chose de très important pour l'optimisation des requêtes et c'est quelque chose qu'il faut maîtriser si vous voulez maîtrisez SQL serveur.

SQL Server 2016 pour les administrateurs IT

Comprenez le fonctionnement et les différents modules qui composent SQL Server. Prenez en main les bases de données, les schémas, les tables, la gestion des fichiers, etc.

5h20 (55 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :14 mars 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !