Meta tags:
description= Chapitre 08 - Optimiser le code SQL;
Headings (most frequently used words):
les, de, table, sql, plan, exécution, indicateurs, requête, et, optimiser, le, code, gestion, des, dynamique, lire, un, principaux, opérateurs, algorithmes, jointure, avancée, plans, son, tables, temporaires, pour, ou, contre, éviter, curseurs, optimisez, vos, déclencheurs, récupérer, vues, débordements, hachages, guides, écriture, ensembliste, comparaisons, filtres, grandeur, misère, fonctions, utilisateur, compter, lignes, une, vaut, il, mieux, utiliser, variables, type, limiter, pollings, avec, notifications, récursivité, mises, jour, tag, cloud, categories,
Text of the page (most frequently used words):
les (263), une (262), est (252), dans (211), des (181), pour (148), plan (147), table (134), sql (128), par (121), sur (110), vous (105), qui (98), que (98), select (90), #requête (88), from (83), exécution (82), lastname (76), nous (73), index (73), plus (67), sont (64), server (58), lignes (57), person (56), code (55), pas (52), exemple (51), avec (49), être (46), cette (45), contact (44), where (43), donc (42), peut (41), même (41), opérateur (41), firstname (40), comme (39), nombre (36), ligne (35), type (35), tables (30), colonne (30), recherche (30), instruction (29), deux (29), requêtes (27), set (27), colonnes (27), force (27), mais (26), elle (26), clause (26), plans (26), contactid (26), ces (25), très (25), fonction (25), scan (25), performances (25), utiliser (23), join (23), aussi (23), xml (23), pouvez (22), sous (21), données (21), cas (21), opérateurs (21), procédure (21), avons (20), transaction (20), cet (20), figure (20), sys (20), clustered (20), votre (19), doit (19), and (19), null (19), résultat (19), après (19), tempdb (19), chaque (19), jour (18), trigger (18), elles (18), sans (18), valeur (18), variable (18), fait (18), dbo (18), clé (18), indicateurs (18), update (17), déclencheur (17), sera (17), bien (17), order (17), fig (17), optimiseur (17), hash (17), permet (16), insert (16), soit (16), estimé (16), jointure (16), niveau (16), dynamique (16), showplan (16), son (15), autre (15), exec (15), option (15), leur (15), cache (15), base (15), utilisation (15), guide (15), partir (14), non (14), name (14), aide (14), syntaxe (14), éviter (14), cela (14), declare (14), compilation (14), spool (14), moteur (14), première (14), utilisé (14), indicateur (14), événement (13), query (13), événements (13), serveur (13), utile (13), souvent (13), sales (13), faire (13), ensembliste (13), avant (13), toute (13), simple (13), ainsi (13), paramètre (13), nom (13), hachage (13), begin (12), for (12), possible (12), jeu (12), delete (12), moins (12), fonctions (12), mise (12), été (12), rollback (12), réel (12), statistiques (12), coût (12), voir (12), optimisation (12), stockée (12), calcul (12), lookup (12), opération (11), tout (11), exécuter (11), ensuite (11), section (11), ordre (11), expression (11), group (11), choix (11), selon (11), création (11), mémoire (11), aggregate (11), optimiser (11), tous (10), lui (10), objets (10), with (10), utilisateur (10), déclencheurs (10), dire (10), celui (10), intérieur (10), filtre (10), ils (10), erreur (10), version (10), différence (10), travail (10), int (10), humanresources (10), middlename (10), liste (10), isolation (10), format (10), client (9), fromdate (9), currencycode (9), peuvent (9), expressions (9), alors (9), into (9), curseurs (9), avez (9), 2005 (9), affichage (9), statistics (9), tri (9), performance (9), union (9), not (9), employeeid (9), dont (9), langage (9), currentcontactid (9), voyons (9), plusieurs (9), taille (9), opérations (9), count (9), lorsque (9), loop (9), graphique (9), simplement (8), objet (8), entrée (8), effectuer (8), modification (8), partie (8), vue (8), retourne (8), instructions (8), ont (8), car (8), affiche (8), create (8), fois (8), ici (8), générer (8), top (8), trouvez (8), th1 (8), généré (8), varchar (8), temporaire (8), temps (8), parce (8), forcer (8), variables (8), emailaddress (8), suffix (8), résultats (8), stratégie (8), trace (8), guides (8), algorithme (8), nested (8), besoin (7), end (7), todate (7), voici (7), revanche (7), celle (7), gestion (7), session (7), ceci (7), ssms (7), verrous (7), row_number (7), notre (7), testloop (7), créer (7), méthode (7), fenêtrage (7), permettent (7), boucle (7), curseur (7), rapide (7), employee (7), appel (7), effectuée (7), cross (7), jointures (7), while (7), possibilité (7), utilisant (7), obtenir (7), estimation (7), trois (7), like (7), valeurs (7), abord (7), modifier (7), getcontactsforplanguide (7), mldr (7), quand (7), merge (7), bookmark (7), informations (6), notifications (6), aux (6), vérifier (6), toutes (6), autant (6), virtuelles (6), ses (6), mises (6), deleted (6), match (6), transactions (6), pratique (6), toujours (6), verrez (6), stockées (6), seule (6), nvarchar (6), recompilation (6), vos (6), groupe (6), faut (6), cte (6), autres (6), peu (6), all (6), contre (6), cur (6), administration (6), notamment (6), read (6), seconde (6), entre (6), haut (6), contrainte (6), doivent (6), relationnel (6), façon (6), unique (6), commande (6), étant (6), compute (6), scalar (6), seek (6), utilise (6), structure (6), vues (6), indique (6), granularité (6), readpast (6), distribution (6), auto (6), puis (6), flèches (6), travers (5), effectue (5), automatiquement (5), return (5), between (5), utilisés (5), bon (5), bonne (5), déclenche (5), début (5), depuis (5), écriture (5), versions (5), contient (5), fonctionne (5), row (5), procédures (5), provoque (5), important (5), effet (5), lors (5), suivante (5), over (5), pouvons (5), réaliser (5), créé (5), key (5), information (5), propriétés (5), nécessaire (5), transactionid (5), produire (5), phrase (5), général (5), compte (5), présence (5), remplacer (5), passer (5), deuxième (5), livre (5), argument (5), correspond (5), utilisée (5), microsoft (5), temporaires (5), lorsqu (5), dit (5), retour (5), mieux (5), reads (5), cardinalité (5), stream (5), puisque (5), getcountcontacts (5), scalaire (5), règle (5), quelques (5), coûteux (5), retournées (5), logique (5), syntaxes (5), phase (5), faite (5), optimize (5), hints (5), utiles (5), détail (5), verrons (5), algorithmes (5), agrégation (5), parcours (5), enfant (5), nonclustered (5), batch (5), apply (5), texte (5), profile (5), commandes (5), flèche (5), place (4), bol (4), contenu (4), utilisez (4), fonctionnalité (4), application (4), site (4), inserted (4), rowcount (4), permettant (4), devez (4), triggers (4), exécute (4), traiter (4), principaux (4), output (4), afficher (4), plutôt (4), visible (4), inutile (4), dangereux (4), principalement (4), idée (4), dml (4), currency (4), affectées (4), aucun (4), jusqu (4), externe (4), garantie (4), explicite (4), réalité (4), contexte (4), disponibles (4), deleteddate (4), sgbdr (4), premier (4), demande (4), voyez (4), system_objects (4), représentation (4), 2008 (4), th2 (4), mot (4), compter (4), str (4), boucles (4), plupart (4), mêmes (4), présenter (4), main (4), hoc (4), adams (4), source (4), execute (4), exécutée (4), permettre (4), aucune (4), verrouillage (4), suffit (4), déjà (4), vaut (4), total (4), comprendre (4), pourquoi (4), pages (4), cpu (4), cnt (4), façons (4), chercher (4), programmeur (4), rien (4), clés (4), choisi (4), retournent (4), droite (4), certaines (4), également (4), stockage (4), arbre (4), abercrombie (4), verrou (4), serializable (4), lire (4), récupérer (4), doublons (4), allons (4), consiste (4), propriété (4), collapse (4), split (4), lookforphysicalops (4), query_plan (4), dm_exec_query_plan (4), text (4), session_id (4), affichent (4), vont (4), info (4), bulle (4), rudi (3), bruchez (3), expertise (3), lequel (3), seront (3), références (3), changé (3), référence (3), readuncommitted (3), nocount (3), attention (3), ensemble (3), optimal (3), comportement (3), appelée (3), trop (3), estimées (3), complexes (3), portant (3), existe (3), déclenché (3), after (3), avoir (3), currencyarchive (3), disponible (3), reconfigure (3), sp_configure (3), options (3), désactiver (3), indiquent (3), quelles (3), quel (3), appelant (3), annule (3), faites (3), serait (3), créés (3), sauf (3), off (3), relativement (3), chaîne (3), jamais (3), 3609 (3), afin (3), via (3), lectures (3), showplan_xml (3), recherches (3), relatif (3), interne (3), supprimées (3), entendu (3), supprimée (3), values (3), tel (3), uniquement (3), ensemblistes (3), certains (3), veut (3), mis (3), recompilations (3), système (3), quelle (3), difficile (3), rownumber (3), ctetestloop (3), exactement (3), encore (3), solution (3), ctl (3), raison (3), problème (3), néanmoins (3), physique (3), potentiellement (3), fil (3), efficace (3), spécifique (3), article (3), hierarchyid (3), boss (3), près (3), chose (3), employeecte (3), actualcost (3), production (3), nombres (3), citations (3), comment (3), parcourir (3), passage (3), moyens (3), construction (3), pourrions (3), analyser (3), parfois (3), sécurité (3), statique (3), respectivement (3), solutions (3), searchcontactsdynamique (3), searchcontactsstatique (3), vient (3), envoi (3), charge (3), 8000 (3), écrire (3), traditionnelle (3), page (3), combinaison (3), vide (3), insertion (3), montre (3), tran (3), sysname (3), lié (3), déclaration (3), primaire (3), appliquer (3), lesquelles (3), révéler (3), performant (3), ressources (3), écrite (3), valable (3), obligé (3), object (3), lecture (3), déclarative (3), contacts (3), aller (3), titre (3), empêche (3), opérandes (3), seulement (3), constant (3), condition (3), filtres (3), opérande (3), changement (3), étape (3), étrangère (3), créent (3), modèle (3), address (3), indexée (3), gauche (3), actuelle (3), relationnelle (3), clauses (3), apparition (3), durant (3), suivants (3), sort (3), exécutions (3), nœud (3), sp_control_plan_guide (3), types (3), défaut (3), suivant (3), chapitre (3), imbriquée (3), conversions (3), schéma (3), installation (3), showplanxml (3), dernier (3), paramétrage (3), moyenne (3), indiquer (3), maximum (3), parallelism (3), donne (3), cost (3), maxdop (3), indiqué (3), devraient (3), considérer (3), complet (3), débordements (3), hachages (3), triées (3), extraire (3), vers (3), xquery (3), triée (3), présent (3), feuille (3), seul (3), bas (3), prédicat (3), lazy (3), celles (3), execution (3), extraction (3), représente (3), plan_handle (3), dm_exec_sql_text (3), compile (3), donnent (3), historiques (3), détruites (3), souris (3), threads (3), représenté (3), produit (3), docs (3), maintenance (3), alwayson (3), diagnostic (3), journaux (3), trouverez (2), basé (2), natif (2), rarement (2), sûr (2), vérification (2), profiter (2), web (2), limiter (2), pollings (2), dates (2), historique (2), chevauchent (2), currencyhistory (2), exists (2), alter (2), devra (2), contraintes (2), contenir (2), contrôles (2), passant (2), check (2), enfin (2), exécutant (2), voulez (2), réellement (2), placé (2), fine (2), current_timestamp (2), currency2 (2), but (2), légère (2), show (2), advanced (2), disallow (2), results (2), présents (2), renvoie (2), notez (2), intéressent (2), atr_d (2), archive (2), tester (2), pure (2), sauvegarde (2), nom_du_point (2), save (2), suivre (2), validé (2), envoyée (2), évitez (2), déclenchement (2), copie (2), store (2), suivi (2), retrouver (2), méfiez (2), correctement (2), implémentent (2), penser (2), terme (2), systématique (2), modifiant (2), court (2), augmente (2), existent (2), ddl (2), entrent (2), optimisez (2), importe (2), astuce (2), bricolage (2), surtout (2), partition (2), partitionnement (2), sûre (2), pourriez (2), capacité (2), gérer (2), implique (2), description (2), exemples (2), organization (2), employeename (2), donner (2), complexe (2), implémenté (2), classe (2), net (2), stocker (2), hiérarchie (2), malgré (2), calculée (2), managerid (2), 100 (2), cast (2), récursivité (2), était (2), common (2), transactiondate (2), 20030901 (2), transactionhistory (2), sum (2), essayer (2), toutefois (2), petits (2), totaux (2), cumulés (2), courant (2), volée (2), nouvelle (2), len (2), substring (2), auteur (2), homme (2), gens (2), concaténation (2), déclaratif (2), nécessaires (2), print (2), next (2), fetch (2), fetch_status (2), fast_forward (2), remplacement (2), intéressant (2), simples (2), meilleure (2), prendre (2), soient (2), préférable (2), viole (2), numéro (2), conservé (2), multiples (2), défauts (2), intéressante (2), inséré (2), essayons (2), appels (2), formulaire (2), révèle (2), règles (2), privilèges (2), contenus (2), risques (2), soyez (2), intégré (2), sorte (2), avantages (2), left (2), reçoit (2), filtrer (2), pratiquement (2), critères (2), sujet (2), évaluer (2), conclusion (2), utilisons (2), insérées (2), évidemment (2), impliquant (2), master (2), sysobjects (2), use (2), impossible (2), volumineuses (2), beaucoup (2), baser (2), absence (2), consomme (2), dure (2), propre (2), contenue (2), moment (2), certaine (2), apparaître (2), métadonnées (2), information_schema (2), démontrer (2), introduit (2), renvoyer (2), logical (2), dm_db_partition_stats (2), index_id (2), object_id (2), row_count (2), outer (2), nix (2), person_contact (2), trouve (2), nouveau (2), décidée (2), lit (2), 000 (2), 125 (2), ackerman (2), function (2), créons (2), noms (2), famille (2), modulariser (2), lieu (2), calculs (2), paraît (2), mauvaise (2), retourner (2), defined (2), grandeur (2), misère (2), entraîner (2), tant (2), sélection (2), prenons (2), constantes (2), fixe (2), choses (2), sarg (2), collation (2), présente (2), assurer (2), appuyer (2), nécessairement (2), addressid (2), recherchée (2), choisir (2), sélectivité (2), estimations (2), dépend (2), testez (2), comparaisons (2), heure (2), choisissez (2), intuitive (2), stratégies (2), signifie (2), procédurale (2), finalement (2), ensembles (2), algèbre (2), manière (2), améliorer (2), premiers (2), distinct (2), grande (2), descriptive (2), précise (2), libraire (2), coller (2), voie (2), plan_guides (2), event (2), operation (2), drop (2), pire (2), parameter (2), sniffing (2), optimizeforall (2), sp_create_plan_guide (2), procedure (2), parameterization (2), directement (2), exclusif (2), pose (2), strictement (2), équivalent (2), holdlock (2), nolock (2), uncommitted (2), beurre (2), quatre (2), read_committed_snapshot (2), versioning (2), committed (2), critère (2), noexpand (2), listons (2), exécutées (2), partout (2), élément (2), supprimé (2), provoquer (2), ressort (2), calculer (2), jacentes (2), considérés (2), changements (2), keepfixed (2), keep (2), mal (2), extrêmes (2), variable_name (2), unknown (2), rappelons (2), parallélisation (2), parallélisme (2), activer (2), désactivé (2), processeurs (2), indexation (2), génération (2), différents (2), entière (2), agit (2), objectif (2), customerid (2), forçant (2), certain (2), fin (2), ajoutant (2), logiques (2), physiques (2), avancée (2), warnings (2), agrégations (2), estimée (2), crée (2), parcourt (2), comparaison (2), importants (2), rapidement (2), fusion (2), correspondance (2), testées (2), imbriquées (2), volumes (2), joindre (2), retournée (2), heap (2), provenant (2), sélectionnées (2), sequence (2), identifiant (2), formes (2), particulières (2), rid (2), remote (2), créée (2), calculées (2), testée (2), comparées (2), filter (2), eager (2), séquence (2), entreprise (2), batchsequence (2), statements (2), http (2), schemas (2), com (2), sqlserver (2), 2004 (2), default (2), sql_handle (2), trouver (2), blog (2), dm_exec_requests (2), start_time (2), status (2), command (2), éliminer (2), spid (2), cours (2), profiler (2), binaire (2), contiennent (2), objectid (2), integerdata (2), binarydata (2), completed (2), starting (2), textdata (2), sqlhandle (2), recompilé (2), octets (2), grâce (2), compilées (2), éléments (2), détaillé (2), envoyées (2), 973 (2), parlerons (2), forcé (2), épaisses (2), petit (2), visuellement (2), fines (2), parallèle (2), parallélisé (2), indiquant (2), envoyé (2), fenêtre (2), affiché (2), fichier (2), extension (2), barre (2), outils (2), ctrl (2), qualité (2), graphe (2), implicites (2), problèmes (2), 2025 (2), shrink (2), sargabilité (2), journal (2), architecture (2), compteurs (2), sauvegardes (2), always (2), français (2), droits, réservés, 2026, services, contactez, moi, parlons, projet, gestionnaire, using, sqldependency, service, broker, applications, abonner, envoyés, changent, régulières, aurait, snac, sqlncli, mettre, chargées, native, raiserror, atr_iu, sales_currencyhistory, checkconsistency, validité, présuppose, acceptent, probablement, hors, tricher, ajoutons, cohérence, préférez, instant, traité, corps, basant, réorienter, intérêts, réécrire, before, instead, archivage, rediriger, songez, rend, cliente, parasitée, recordset, indésirable, renvoi, malencontreusement, interragit, référez, mentionnée, servez, mentionnées, columns_updated, sales_currency2, perte, frf, fera, prudent, mécanisme, points, effectivement, oubliez, dehors, fermera, éventuels, cursor_close_on_commit, insensitive, static, souhaitez, mesure, déclenchant, gère, égal, sortie, apparaît, exécuté, intérêt, déclencher, sens, commit, trancount, annuler, déclenchante, envoie, avertir, placer, bloc, try, catch, soir, feront, particuliers, massivement, modifiées, provoquera, activité, gérées, considéré, logiquement, ajoutées, fréquente, vidée, inscrite, smalldatetime, nchar, sales_currency, commun, opposition, déclenchent, essentiel, per, point, comportent, rappel, réutilisé, garder, prolonge, durée, exécutent, structures, cadre, aborderons, blocs, exécutés, obligatoirement, imiter, garantir, correct, facile, recommencer, numérotation, compliqué, officielle, raisons, contourner, limitation, précisément, regroupement, implémentation, documentée, consistante, primary, identity, affecter, mélanger, affectation, forme, détournée, évitera, dernière, structuration, intervallaire, frédéric, brouard, working, data, getroot, isdescendantof, getancestor, getlevel, level, dessus, disposez, méthodes, indexer, récursif, descendre, classique, employé, manager, récusrives, connaissait, profondeur, résout, totalcumule, précision, découpage, lisez, rencontré, citation, mots, system_views, tally, newid, charindex, nullif, mécontents, pauvres, réfléchissent, talleyrand, ennuyeux, incapable, ennuyer, cioran, généralement, guitry, 1000, séparations, pivots, coalesce, max, caractéristique, profit, final, séquentielle, finir, break, deallocate, close, open, cursor, traitement, révèlent, efficaces, traitements, vérifications, remplacés, récrire, différent, rencontre, automatiser, maintenances, acceptable, tenu, fréquence, fenêtres, favorables, rencontrer, manque, connaissance, possibilités, décision, eux, optimisables, pensons, only, circuite, ennemi, public, séquentiellement, côté, comportant, reste, lisibilité, figures, adapté, parlante, gagne, cachehit, nommées, proposées, réutilisation, écueil, tombons, accompagnement, quoi, agir, inconvénient, avantage, obéit, chaînage, propriétaires, termes, vérifiés, autorisé, injection, malicieux, utilisaeur, ayant, prudents, injections, prévenir, quelque, précompilation, évaluation, prises, internaute, saisir, arguments, prend, imaginons, multi, produits, particulière, fréquemment, construire, débat, dynamiquement, ute, recommande, précisons, intéressantes, petite, laquelle, insérons, annulation, annulée, bénéfique, codez, risquez, inattendus, expérimenter, enrôlées, part, possibles, utilisées, regardant, 1763, resources, statistique, zéro, productif, inconvénients, oui, maintenir, moindre, journalisée, constater, enrôlée, validée, privée, fn_dblog, gain, apporté, limité, réside, atteint, séparez, tests, ressemblant, 04ca11fe, entendrez, vit, erroné, assigne, 2000, transact, facilité, déclarées, restent, buffer, atteignent, nécessite, disque, sysidxstats, filtrée, démonstration, êtes, expérience, right, pk_contact_contactid, incluant, décortiquer, regardons, nettoyé, faciliter, nature, violée, impliquée, entrer, séparé, moyen, lier, forçons, huit, secondes, millisecondes, 1200, lues, tracé, observons, différences, gardons, inclure, profitons, returns, reprenant, réutiliser, circonstances, songer, serions, tentés, sembler, rêve, diminution, redondant, modularisation, répétitive, encapsuler, udf, user, functions, provoquent, plage, manier, précaution, grand, égalité, offre, pourtant, compilateur, transformer, arithmétiques, capable, contenant, simplifier, connue, folding, sargable, efficacement, annuaire, connaissant, premières, lettres, lili, alameda, jim, nez, écrivez, alamedalili, latin1_general_ci_ai, jimenez, collate, appelle, évalué, stocké, empêchera, forcera, conséquent, search, impératif, mère, déportée, fille, mères, indexées, générale, liées, telle, définition, bénéficient, effectuent, employeeaddress, addressline1, postalcode, city, montrent, quoiqu, considérez, présentes, êtres, exprimées, ternaire, vrai, faux, inconnu, composées, absolue, disons, évolue, améliore, futur, probable, finisse, dépasser, déduire, clarté, anciennes, connues, chance, bénéficier, optimisations, solides, performante, nécessité, environ, 200, écrit, voulons, personnes, utilité, balancer, bannir, introduites, pivot, optimales, forcent, proches, fonctionnement, considérations, pur, 19973, déclaratives, triste, définissent, travaillent, entorses, hérésie, tuples, relation, précis, ordré, théorie, influant, tris, coûteuses, influe, importance, décomposée, récrite, having, lisible, légèrement, différente, identique, considérant, faible, volumétrie, 290, faits, derniers, identiques, incluent, normaliser, équivalentes, produisent, presque, bijou, algorithmique, connaissances, dispose, qualifié, tâche, ailleurs, forciez, prendrait, allez, librairie, commander, demandez, ouvrage, dites, catalogue, livres, distribués, noter, isbn, souhaite, copier, programme, inscrire, mon, merci, imprimer, parvenir, postale, distributeur, éditions, purement, prénoms, triés, prénom, title, cohérent, maître, décrit, désiré, enregistrés, courante, échoué, explorateur, programmability, unsuccessful, successful, disable, supprimer, prenant, générique, scénario, désagréable, profiteraient, cause, limitera, dégâts, sélectif, utilisera, défavorable, provoquant, suppression, params, module_or_batch, stmt, spécifiez, autoparamétrage, template, créez, modifiez, désactivez, activez, xlock, updlock, tablockx, partagé, tablock, normalement, escalade, larges, posés, rowlock, repeatable, repeatableread, attendre, libération, incompatibles, incomplète, obtient, argent, forcément, cinq, mode, readcommittedlock, readcommitted, paglock, désactive, attente, verrouillée, immédiatement, nowait, index_val, forceseek, touchent, abordons, succintement, entrant, ajoutent, laisser, respecteront, forceplan, envoyez, unicode, devant, littéral, caractère, indésirables, enregistrement, pouvoir, répertoire, xsd, référencé, modifiée, ultérieur, invalide, connaissez, meilleur, antérieure, dégradé, marbre, xml_plan, limite, récursifs, récursive, maxrecursion, nombre_de_récursions, satisfaire, inverse, seuls, expand, views, diminue, dûes, six, dûe, cachant, individuellement, diminuer, produites, forced, recompile, spécifier, risque, hétérogène, sélectives, choisie, considérée, paramètres, ajoute, souplesse, distribuée, représentative, optimisé, donnée, déjouer, pièges, literal_constant, définie, degree, attribuer, coûteuse, paralléliser, threshold, machine, impliqué, nombre_de_processeurs, structurel, changer, pourra, soupçon, ordres, gagnante, spécifie, détriment, double, tranchant, empirer, garantit, conséquence, goal, optimisée, poursuivre, pagination, fast, nombre_de_lignes, rares, exceptions, sait, concat, territoryid, customeraddress, customer, garde, tâcher, expliquer, comporter, intéressants, disposition, préférée, voire, prédéfini, disparu, génère, répéter, fonctionnalités, savez, conscient, répercutions, revue, spécifiques, résolution, appliquant, agrégat, regroupements, renvoyée, processor, could, produce, because, the, this, détecter, dûs, errors, warning, débordement, ralentit, nettement, sqlos, réserve, quantité, optimiste, pendant, baver, parle, spilling, souffre, désavantages, bloquant, complètement, terminée, travailler, eau, consommateur, équijointures, phases, premièrement, privilégié, jeux, préparation, grosses, ordonnées, nœuds, feuilles, préalable, équijointure, comparer, égalités, correspondances, conservée, suivantes, exprimés, lookups, proportionnellement, schématiser, rechercher, cherchait, second, implémente, udx, retournant, traitée, valued, provient, précéder, proriétés, sauve, intermédiaire, parcourues, opère, norme, implémentée, servent, sequenceproject, segment, distant, serveurs, distants, obsolètes, linked, normalise, intervalles
Text of the page (random words):
ompilation consiste à bâtir un arbre de séquence sequence tree pour décomposer la requête à cette étape des conversions implicites de types de données sont appliquées si nécessaire ainsi que le remplacement de l appel aux vues par l appel aux tables sous jacentes un graphe de requête query graph est créé qui est ce qui est envoyé à l optimiseur l optimisation intervient pour les requêtes dml select insert update et delete l optimiseur reçoit un graphe de requête et essaie de trouver la meilleure stratégie d exécution l optimiseur sql server est basé sur le coût cost based optimizer c est à dire qu il va orienter son choix vers le plan le moins coûteux pour cela il teste d abord la possibilité d utiliser un plan léger trivial plan dans le cas par exemple d un simple insert mldr le plan ainsi généré est mis en cache après avoir été potentiellement paramétré en cas d auto paramétrage ce plan d exécution est l information essentielle dont nous avons besoin pour évaluer la qualité du code de notre requête et ses performances estimées et pour considérer la création d index utiles nous avons plusieurs moyens de le visualiser le plus simple est d afficher une représentation graphique de ce plan dans ssms deux versions de ce plan y sont disponibles le plan dit estimé et le plan dit réel le plan estimé est celui qui est produit par l optimiseur et qui est affiché avant l exécution de la requête le plan d exécution réel est le même plan exactement que le plan estimé puisque ce plan est utilisé sans aucune sorte de modification dynamique en cours d exécution de la requête simplement le plan réel inclut quelques statistiques d exécutions effectives qui peuvent différer des statistiques estimées principalement sur le nombre de lignes affectées la combinaison de touches ctrl l affiche le plan estimé des instructions de la femêtre de requête active ou des instructions sélectionnées ctrl m prépare l affichage du plan réel dans un onglet supplémentaire de la fenêtre de résultat vous pouvez aussi les activer par des boutons de la barre d outils de l éditeur sql indiqués sur la figure 8 2 fig 8 2 barre d outils le plan d exécution est ainsi affiché dans une représentation graphique qui est l adaptation synoptique d un plan généré en format xml ce plan peut être sauvegardé dans un fichier avec un clic droit sur le plan et la commande save execution plan as mldr l extension par défaut est sqlplan lorsque vous ouvrez un fichier portant cette extension avec ssms la représentation graphique est générée ce qui est pratique pour afficher des plans exportés d une vision xml ou à partir d une trace nous trouvons en figure 8 3 un plan graphique simple fig 8 3 plan d exécution graphique correspondant à la requête select firstname lastname from person contact where lastname abercrombie vous voyez au passage que la requête a été auto paramétrée par le moteur relationnel puisque le texte statement visible dans le plan d exécution est select firstname lastname from person contact where lastname 1 nous verrons ce qu est l auto paramétrage dans la section 9 2 chaque icône représente un opérateur du plan c est à dire une opération effectuée sur les données nous les détaillerons dans la section suivante le plan se lit de droite à gauche la première opération effectuée se trouve en haut et à droite chaque opérateur produit une table en mémoire dont le résultat qui est envoyé à l opérateur suivant ce qu expriment les flèches le nombre de lignes transportées est représenté visuellement par l épaisseur des flèches sur la figure 8 3 toutes les flèches sont fines elles ne conduisent donc qu un petit nombre de lignes chaque opérateur ainsi que l instruction entière affichent un coût relatif en pourcent lors de l affichage du plan de plusieurs instruction le coût par instruction montre une estimation du poids relatif de chacune ce qui est pratique pour avoir un aperçu des performances comparées de plusieurs syntaxes de requête la touche f4 permet d afficher les propriétés du plan ou de chaque opérateur selon la sélection effectuée à la souris de même en laissant le pointeur de la souris posé sur un opérateur ou une flèche on peut en voir les détails dans une fenêtre de type info bulle nous voyons en figure 8 4 l affichage des propriétés et de l info bulle fig 8 4 propriétés et info bulle sont notamment utiles l estimation du nombre de lignes produit par l analyse des statistiques de distribution sur la colonne et la taille moyenne estimée de la ligne en octets la taille multipliée par le nombre nous donne une estimation du volume de données que le moteur de stockage va devoir transmettre d opérateur à opérateur nous pouvons voir directement ce calcul dans l info bulle des flèches le coût estimé de l opérateur est une addition des coûts cpu et i 0 estimés vous voyez également sur quel objet est effectuée l opération sur la figure 8 4 c est une recherche dans l index nix person_contact lastname quelles sont les colonnes résultantes qui sont envoyées à l opérateur suivant output list et le prédicat de filtre le scalaire n abercrombie qui est converti automatiquement en nvarchar pour correspondre au type de données de la colonne lastname le coût du sous arbre subtree cost est simplement la somme du coût de tous les opérateurs précédents plus le courant indiquant donc ce qu a déjà coûté le trajet si vous avez désactivé la création ou la mise à jour automatique de statistiques sur votre base de données vous verrez apparaître un signe d alerte sur les opérateurs de votre plan qui n auront pas les statistiques nécessaires à l estimation d une cardinalité dans le plan en xml l information sera contenue dans un élément warnings columnswithnostatistics il peut exister au plus deux versions d un même plan en cache une version monoprocesseur et une version parallélisée sql server choisit d utiliser l un ou l autre selon la charge des cpu à l exécution si le plan parallélisé est choisi tous les opérateurs enrôlés dans l exécution parallèle seront agrémentés d une image l indiquant comme en figure 8 5 fig 8 5 plan d exécution parallélisé pour ce plan nous avons forcé un mauvais plan en ajoutant un indicateur d index mal à propos l exécution en parallèle doit joindre les résultats provenant des différents threads ce qu il fait ici dans l opérateur parallelism gather streams grâce à cet affichage graphique vous avez tous les éléments pour comprendre rapidement comment votre requête est exécutée afin de l optimiser concentrez vous sur les opérateurs les plus coûteux et les flèches les plus épaisses un des objectifs de l optimisation est notamment de filtrer le nombre de lignes à traiter au plus tôt dans l arbre du plan d exécution le pire étant représenté par un nombre très important de lignes traitées au début pour aboutir à un petit nombre en fin de plan visuellement les flèches sont très épaisses à droite puis très fines à gauche par exemple que constatons nous sur la figure 8 5 comme nous avons forcé l utilisation d un index inutile pour résoudre le filtre de la clause where sql server est obligé de nous obéir il parcourt le nœud feuille de l index index scan pour en extraire les contactid contenus dans la clé de l index tous les index contiennent en plus la clé de l index clustered le résultat 19 973 lignes sont retournées pour un total de 125 ko comme nous pouvons le voir sur la figure 8 6 fig 8 6 envoi d un opérateur à l autre ces lignes donnant le contactid il faut maintenant aller chercher les colonnes firstname et lastname dans la table pour cela une recherche à travers l index clustered doit être faite pour chaque contactid ce qui est représenté ici par l opérateur de boucle imbriquée nested loop dont nous parlerons dans la section 8 1 2 sur les algorithmes de jointure pour chaque ligne de la flèche du haut une recherche est effectuée avec l opérateur du bas ici un bookmark lookup de type key lookup une recherche seek dans l index clustered c est cette opération qui plombe toute la requête elle vaut pour 98 de son coût total en effet il faut parcourir 19 973 fois l index clustered la flèche qui la relie au nested loop le montre dans le plan estimé cette flèche est fine parce que l estimation qui est faite par sql server est de une seule ligne retournée dans les propriétés de l opérateur nested loop ou de la flèche qui vient du key lookup nous avons l information du nombre de lignes donc de seeks de l index clustered qui ont été traités par thread comme nous le voyons sur la figure 8 7 fig 8 7 nested loop sur plusieurs threads lorsque toutes les lignes sont retournées avec la valeur de firstname et lastname elles sont envoyées 1 4 mo passe du nested loop au filter à un opérateur de filtre qui travaillant en mémoire va éliminer les lignes qui ne correspondent pas au prédicat de recherche lastname n abercrombie il n en restera que trois lignes envoyée à la synchronisation des threads parallélisés puis au client comme jeu de résultats nous verrons un peu plus loin les opérateurs plus en détail récupérer les plan d exécution outre l affichage graphique intégré à ssms vous avez plusieurs moyens de générer des plans d exécution tout d abord un certain nombre de commandes de session permettent l affichage du plan set showplan_xml on affiche le plan d exécution estimé complet en format xml sans exécuter l instruction set showplan_text on affiche le plan d exécution estimé simplifié en format texte une ligne de jeu de résultat par opérateur du plan sans exécuter l instruction set showplan_all on affiche le plan d exécution estimé détaillé avec estimations et alertes en format texte une ligne de jeu de résultat par opérateur du plan sans exécuter l instruction set statistics xml on affiche le plan d exécution complet réel en format xml après exécution de l instruction set statistics profile on affiche le plan d exécution détaillé réel en format texte une ligne de jeu de résultat par opérateur du plan après exécution de l instruction les commandes set showplan doivent être lancées dans leur propre batch sans aucune autre instruction vous devez donc les séparer de vos requêtes par un go dans ssms les commandes non xml sont considérées par microsoft comme en voie d obsolescence elles seront peut être supprimées dans une version ultérieure de sql server les commandes set showplan mldr affichent donc le plan estimé et les commandes set statistics le plan réel les quelques informations supplémentaires du plan réel sont visibles dans le plan xml dans les éléments runtimeinformation qui y sont ajoutés sur l affichage graphique du plan vous les trouvez dans les affichages détaillés lorsque vous glissez votre souris sur un opérateur ils commencent par actual mldr vous pouvez aussi récupérer ces plans à partir d une trace sql les événements à sélectionner sont dans le groupe d événements performance l événement performance statistics se déclenche quand un plan d exécution est inséré dans le cache de plans quand il est recompilé ou quand il est vidé du cache la colonne eventsubclass contient l identifiant du type d événement qui peut être un des suivants 0 un nouveau batch n est pas encore dans le cache la colonne textdata contient le code sql de la requête 1 des instructions dans une procédure stockée ont été compilées 2 des instructions dans un batch de requêtes ad hoc ont été compilées 3 une requête a été supprimée du cache et les données historiques de performances vont être détruites 4 une procédure stockée a été supprimée du cache et les données historiques de performances vont être détruites 5 un déclencheur a été supprimé du cache et les données historiques de performances vont être détruites les événements 1 4 et 5 retournent les colonnes databaseid et objectid le nom de l objet procédure ou déclencheur peut être retrouvé grâce à la fonction object_name qui accepte en deuxième paramètre un db_id dans les événements 1 et 2 la colonne binarydata contient le plan d exécution généré en format binaire de même les colonnes cpu et duration donnent les temps de compilation la colonne integerdata donne la taille en kilo octets du plan généré les colonnes bigintdata1 et bigintdata2 donnent respectivement le nombre de fois où ce plan a été recompilé et la taille mémoire qui a été nécessaire à la compilation en ko tous retournent les colonnes sqlhandle et planhandle sauf l événement 0 qui ne retourne que le sqlhandle qui donnent des identifiants utiles pour obtenir plus d informations à partir des vues de gestion dynamique que nous présenterons dans la section suivante les événements showplan xml showplan xml for query compile et showplan xml statistics profile affichent des plans en xml dans la colonne textdata showplan xml retourne le plan d exécution qui est utilisé par la requête sans les statistiques d exécution cela correspond au plan estimé l événement se déclenche après l événement sql ou sp starting mais avant showplan xml statistics profile showplan xml for query compile retourne le plan d exécution tel qu il est compilé et mis en cache cet événement se déclenche durant la phase de compilation avant exécution donc avant un événement starting et avant la mise en cache événement sp cacheinsert showplan xml statistics profile retourne le plan d exécution utilisé par la requête avec les statistiques d exécution cela correspond au plan réel l événement se déclenche juste avant l événement sql completed ou sp completed dans les trois cas binarydata contient le coût estimé de la requête et integerdata le nombre estimé de lignes retournées objectid et objectname contiennent l id et le nom de l objet objecttype le type d objet autres événements les événements showplan text showplan text unencoded showplan all showplan all for query compile et showplan statistics profile existent pour compatibilité vous pouvez les utiliser pour voir les plans en format texte les événements produisant des plans en xml sont plus complets et devraient être préférés le profiler affiche le plan d exécution graphique comme ssms sur les événements qui retournent ce plan en xml ou en format binaire comme nous le voyons sur la figure 8 8 fig 8 8 plan d exécution dans le profiler un dernier mot la génération en masse de plans d exécution dans une trace est non seulement inutile et provoque un raz de marée d informations mais est aussi très pénalisante pour les performances tracez ces événements seulement au besoin en filtrant votre trace les vues de gestion dynamique vous trouvez le code sql de vos requêtes ainsi que leur plan d exécution dans certaines vues de gestion dynamique celles qui lisent le contenu du cache de plans et celles qui affichent les requêtes exécutées dans le sql server en temps réel deux fonctions permettent de retourner respectivement le code sql de l instruction sys dm_exec_sql_text et le plan d exécution xml dm_exec_query_plan exemple d extraction des textes et des plans des tâches en cours select er session_id er start_time er status er command st text qp query_plan from sys dm_exec_requests...
|