If you are not sure if the website you would like to visit is secure, you can verify it here. Enter the website address of the page and see parts of its content and the thumbnail images on this site. None (if any) dangerous scripts on the referenced page will be executed. Additionally, if the selected site contains subpages, you can verify it (review) in batches containing 5 pages.
favicon.ico: pachadata.com/docs/optimiser-sql-server/chapitres/080.optimiser-le-code - Optimiser le code SQL | Rudi B.

site address: pachadata.com/docs/optimiser-sql-server/chapitres/080.optimiser-le-code redirected to: pachadata.com/docs/optimiser-sql-server/chapitres/080.optimiser-le-code

site title: Optimiser le code SQL Rudi Bruchez

Our opinion (on Sunday 16 August 2026 22:05:30 UTC):

GREEN status (no comments) - no comments
After content analysis of this website we propose the following hashtags:



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):
réalité on peut le vérifier simplement par exemple en regardant le plan d exécution estimé de cette requête qui retourne en réalité 1763 lignes sur ma version de la base resources declare t table name sysname insert t select name from sys system_objects select from t le plan d exécution généré peut donc se révéler bien moins performant qu avec une table temporaire il est de même impossible de créer des index sur une variable à part un index lié à une contrainte déclaration de clé primaire ou de clé unique possibles uniquement à la création de la table comme il est impossible d y appliquer après création toute commande ddl ainsi les variables ne doivent pas être utilisées pour remplacer des tables temporaires volumineuses sur lesquelles on effectue beaucoup d opérations de recherche nous l avons dit les opérations sur la variable ne sont pas enrôlées dans une transaction la différence est simple à expérimenter use tempdb go create table t name sysname begin tran insert t select name from master dbo sysobjects rollback select from t go declare t table name sysname begin tran insert t select name from master dbo sysobjects rollback select from t dans la première partie du code nous utilisons une table temporaire dans laquelle nous insérons des lignes à l intérieur d une transaction explicite après l annulation de la transaction rollback la table est vide l insertion a été annulée en revanche l application du même code à la variable de type table montre que même après le rollback les lignes insérées sont toujours dans la variable bien que bénéfique pour les performances ce comportement est évidemment dangereux si vous codez des transactions impliquant des variables de type table vous risquez d obtenir des résultats inattendus en conclusion microsoft recommande de remplacer les tables temporaires par des variables autant que possible précisons donc qu elles ne sont intéressantes que lorsqu elles sont de petite taille pour des opérations simples et bien entendu lorsqu on ne peut les remplacer par des jointures des sous requêtes ou des expressions de table pour ou contre le sql dynamique le sujet fait débat que penser du sql dynamique c est ainsi qu est appelée la possibilité de générer une instruction sql plus ou moins complexe dans une variable de type varchar pour ensuite l évaluer et l exécuter dynamiquement à l aide du mot clé exec ute par exemple declare sql varchar 8000 set sql select from person contact exec sql cette syntaxe particulière est fréquemment utilisée pour construire à l intérieur de procédures stockées des requêtes complexes notamment pour permettre une combinaison de multiples critères de recherches dans la clause where imaginons le cas d un site web qui permet dans une page de formulaire d effectuer une recherche multi critères sur des produits chaque argument de recherche correspond à une colonne le tout sur une ou plusieurs tables de notre base l internaute peut saisir ou non une valeur pour chaque argument une procédure stockée reçoit en paramètre la liste des arguments qu elle utiliser pour filtrer la requête il n y a pratiquement que deux choix écrire une requête traditionnelle qui prend en compte tous les cas de figure comme ceci select firstname middlename lastname suffix emailaddress from person contact where lastname lastname or lastname is null and firstname firstname or firstname is null and middlename middlename or middlename is null and suffix suffix or suffix is null and emailaddress emailaddress or emailaddress is null order by lastname firstname ou générer son code sql de façon dynamique avec une construction comme celle ci declare sql varchar 8000 set sql select firstname middlename lastname suffix emailaddress from person contact where if firstname is not null set sql sql firstname firstname and if middlename is not null set sql sql middlename middlename and if lastname is not null set sql sql lastname lastname and if suffix is not null set sql sql suffix suffix and if emailaddress is not null set sql sql emailaddress emailaddress and set sql left sql len sql 3 exec sql le sql dynamique a ses défauts intégré dans une procédure stockée il annule en quelque sorte les avantages de précompilation de la procédure en effet la chaîne exécutée ne fait plus partie de la procédure stockée son évaluation et exécution dynamique sont prises en charge par le moteur relationnel comme les autres requêtes ad hoc sécurité une autre contrainte vient de la sécurité le sql dynamique n obéit plus aux règles de chaînage de propriétaires en d autres termes les privilèges doivent être vérifiés sur les objets contenus dans le sql dynamique et l utilisateur exécutant la procédure doit donc être autorisé sur ces objets ceci pour éviter les risques d injection sql c est à dire d envoi de code malicieux vous pouvez créer votre procédure avec la clause execute as pour l exécuter dans un contexte d utilisaeur ayant des privilèges sur ces objets soyez néanmoins très prudents sur les risques d injections voyez par exemple cet article pour vous prévenir contre elles à quoi bon faire une procédure stockée si c est pour la faire agir comme un code client mais dans le cas de figure du formulaire de recherche cet inconvénient se révèle plutôt un avantage la non réutilisation du plan d exécution permet d éviter l écueil dans lequel nous tombons dans le cas de l exemple de requête statique utilisant le bricolage lastname lastname or lastname is null nous avons créé deux procédures stockées dont vous trouverez le source sur le site d accompagnement du livre elles sont nommées person searchcontactsstatique et person searchcontactsdynamique et elles implémentent la même requête selon les deux solutions proposées essayons deux appels exec person searchcontactsstatique lastname adams go exec person searchcontactsdynamique lastname adams go exec person searchcontactsstatique lastname adams middlename s go exec person searchcontactsdynamique lastname adams middlename s go sur la figure 8 14 nous voyons la différence de performance entre les deux solutions lors du deuxième appel elle est très parlante la solution dynamique gagne haut la main nous voyons aussi un cachehit le code ad hoc de la requête dynamique s est tout de même inséré dans le cache de plans fig 8 14 différence de performances sur les figures 8 15 et 8 16 nous voyons respectivement le plan de la première procédure qui n a pas changé et le plan de la seconde qui s est adapté fig 8 15 plan de la procédure statique fig 8 16 plan de la procédure statique nous pourrions conservé la syntaxe de la première procédure et forcer la recompilation mais la requête comportant de multiples variables reste difficile à analyser parfois la syntaxe dynamique malgré ses défauts en terme de sécurité et de lisibilité est intéressante pour les performances éviter les curseurs le curseur est une construction t sql permettant de traiter séquentiellement un jeu de résultat du côté serveur parce qu il viole la syntaxe ensembliste du langage sql et ainsi court circuite toute possibilité d optimisation par sql server il est l ennemi public numéro un des performances du code sql en présence de curseurs la meilleure décision d optimisation à prendre est de les remplacer par du code ensembliste ce qui est la plupart du temps possible bien que les curseurs soient en eux mêmes optimisables par le choix de curseurs en type read only ou fast_forward notamment nous pensons préférable de présenter des moyens de s en passer la plupart des curseurs qu on peut rencontrer dans du code de production sont créés par manque de connaissance des possibilités du langage sql le code d administration est un problème différent on y rencontre des curseurs pour automatiser des maintenances sur les objets ce qui est acceptable compte tenu de la fréquence d utilisation et du choix de fenêtres d administration favorables souvent les curseurs sont utilisés pour effectuer des traitements ou des vérifications complexes sur les lignes ils peuvent en général être remplacés par de simples jointures ou un passage par une table temporaire le but est de les récrire en code ensembliste si le traitement ligne par ligne est néanmoins nécessaire il est souvent plus intéressant d effectuer une boucle while avec des select qui se révèlent plus efficaces voici un exemple simple de curseur et son remplacement par une boucle while curseur declare cur cursor fast_forward for select contactid from person contact order by contactid declare currentcontactid int open cur fetch next from cur into currentcontactid while fetch_status 1 begin if fetch_status 2 print currentcontactid fetch next from cur into currentcontactid end close cur deallocate cur go boucle while declare currentcontactid int select top 1 currentcontactid contactid from person contact order by contactid while 1 1 begin print currentcontactid select top 1 currentcontactid contactid from person contact where contactid currentcontactid if rowcount 0 break end while mais les boucles ne sont pas toujours nécessaires sql est un langage déclaratif et ensembliste mais l exécution de la requête par le moteur d exécution est au final séquentielle il faut bien finir par parcourir les lignes l une après l autre cette caractéristique peut être mise à profit voici par exemple comment réaliser une concaténation declare str varchar max select str coalesce str lastname from person contact group by lastname order by lastname select str à l aide des fonctions sql et des jointures vous pouvez aussi réaliser des séparations et des pivots par exemple create table citations auteur varchar 50 phrase varchar 1000 insert into citations values guitry il y a des gens sur qui on peut compter ce sont généralement des gens dont on n a pas besoin cioran un homme ennuyeux est un homme incapable de s ennuyer talleyrand les mécontents ce sont des pauvres qui réfléchissent select auteur nullif substring phrase id charindex phrase id id as mot from select row_number over order by newid as id from sys system_views tally cross join citations where id len phrase and substring phrase id 1 1 cette requête place chaque mot rencontré dans la citation sur une nouvelle ligne dans la colonne mots elle se base sur une jointure avec une table de nombres que nous avons ici généré à la volée une table de nombre est toujours utile faites en une à l aide de row_number pour plus de précision sur cette méthode de découpage lisez cet article un autre besoin courant est de produire des totaux cumulés cette opération peut être plus rapide effectuée par un curseur que par une requête ensembliste c est donc un contre exemple 30 le code ensembliste est à essayer toutefois sur des petits totaux cumulés voici un exemple de code select th1 transactionid th1 actualcost sum th2 actualcost as totalcumule from production transactionhistory th1 join production transactionhistory th2 on th2 transactionid th1 transactionid and th2 transactiondate 20030901 where th1 transactiondate 20030901 group by th1 transactionid th1 actualcost order by th1 transactionid récursivité avant sql server 2005 la récursivité ensembliste n était pas possible en tout cas sur des recherche récusrives dont on ne connaissait pas la profondeur l expression de table common table expression cte résout ce problème exemple d appel récursif pour descendre dans une hiérarchie classique employé manager with employeecte as select e employeeid c firstname c lastname 1 as niveau cast n lui même as nvarchar 100 as boss from humanresources employee e join person contact c on e contactid c contactid where e managerid is null union all select e employeeid c firstname c lastname niveau 1 cast m firstname m lastname as nvarchar 100 from humanresources employee e join person contact c on e contactid c contactid join employeecte m on m employeeid e managerid select firstname lastname niveau boss from employeecte en sql server 2008 vous disposez du type de données hierarchyid qui est un type complexe implémenté en classe net il permet de stocker une information de hiérarchie et de retrouver ces informations à travers de méthodes malgré le fait que ce soit un type net il est plus rapide que l utilisation de cte de plus on peut indexer ses propriétés si nécessaire en passant par une colonne calculée pour vous donner une idée de l utilisation de ce type voici un exemple de requête qui fait à peu près la même chose que la cte ci dessus select o1 employeename o1 employeeid getlevel as level o2 employeename as boss from humanresources organization o1 join humanresources organization o2 on o2 employeeid o1 employeeid getancestor 1 where hierarchyid getroot isdescendantof o1 employeeid 1 31 vous trouvez des exemples d utilisation dans les bol 2008 sous l entrée working with hierarchyid data une dernière méthode très efficace implique une structuration de la table spécifique en représentation intervallaire vous en trouvez la description dans cet article de frédéric brouard mises à jour un update s effectue lui aussi ligne par ligne même si l instruction est ensembliste comme vous pouvez affecter une valeur à une variable dans un update et mélanger cette affectation avec une mise à jour de colonne vous pouvez générer une forme détournée de boucle qui vous évitera un curseur exemple très simple create table dbo testloop id int not null identity 1 1 primary key clustered nombre int null groupe int not null go insert into dbo testloop groupe select top 10 1 from sys system_objects union all select top 20 2 from sys system_objects union all select top 15 3 from sys system_objects go declare i int 0 update dbo testloop set i i 1 nombre i go select from dbo testloop cette méthode est relativement peu sûre car elle se base sur une implémentation physique non documentée et potentiellement non consistante au fil des versions elle est néanmoins pratique depuis sql server 2005 les fonctions de fenêtrage permettent de réaliser la même opération avec en plus la capacité de gérer précisément un ordre et un regroupement par la valeur d autres colonnes c est pour cette raison que nous avons créé la colonne groupe dans la table le problème est que nous ne pouvons utiliser une fonction de fenêtrage que dans un select nous pouvons contourner cette limitation à l aide d une expression de table with ctetestloop as select id row_number over order by id as rownumber from dbo testloop update tl set nombre ctl rownumber from dbo testloop tl join ctetestloop ctl on tl id ctl id cet exemple effectue exactement la même mise à jour mais avec garantie de l ordre par la colonne id cette méthode est officielle et sûre en revanche vous pourriez encore utiliser la solution à base de variable dans les cas où le tri ne vous importe pas pour des raisons de performance pure voyez la différence de plan d exécution sur la figure 8 17 la version cte doit créer un plan compliqué avec une jointure sur la même table un tri et une table de travail table spool fig 8 17 plan des requêtes de mise à jour mais il faut aussi dire qu avec la fon...
Images from subpage: "pachadata.com/docs/optimiser-sql-server/chapitres/053.les-co... " Verify
Images from subpage: "pachadata.com/docs/optimiser-sql-server/chapitres/056.evenem... " Verify
Images from subpage: "pachadata.com/docs/optimiser-sql-server/chapitres/060.indexa... " Verify
Images from subpage: "pachadata.com/docs/optimiser-sql-server/chapitres/065.statis... " Verify
Images from subpage: "pachadata.com/docs/optimiser-sql-server/chapitres/070.transa... " Verify

Verified site has: 90 subpage(s). Do you want to verify them? Verify pages:

1-5 6-10 11-15 16-20 21-25 26-30 31-35 36-40 41-45 46-50
51-55 56-60 61-65 66-70 71-75 76-80 81-85 86-90


The site also has references to the 1 subdomain(s)

  pachadata.com  Verify


Top 50 hastags from of all verified websites.

Supplementary Information (add-on for SEO geeks)*- See more on header.verify-www.com

Header

HTTP/1.1 301 Moved Permanently
Server nginx
Date Sun, 16 Aug 2026 22:05:30 GMT
Content-Type text/html
Content-Length 162
Location htt????/pachadata.com/docs/optimiser-sql-server/chapitres/080.optimiser-le-code/
Connection close
HTTP/1.1 200 OK
Server nginx
Date Sun, 16 Aug 2026 22:05:30 GMT
Content-Type text/html
Last-Modified Thu, 05 Mar 2026 11:28:34 GMT
Transfer-Encoding chunked
Connection close
ETag W/ 69a968e2-456a0
Content-Encoding gzip

Meta Tags

title="Optimiser le code SQL | Rudi Bruchez"
charset="utf-8"
name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"
name="color-scheme" content="light dark"
name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff"
name="theme-color" media="(prefers-color-scheme: dark)" content="#000000"
name="robots" content="index, follow"
name="description" content="Chapitre 08 - Optimiser le code SQL"
property="og:url" content="htt????/www.pachadata.com/docs/optimiser-sql-server/chapitres/080.optimiser-le-code/"
property="og:site_name" content="Rudi Bruchez"
property="og:title" content="Optimiser le code SQL"
property="og:description" content="Chapitre 08 - Optimiser le code SQL"
property="og:locale" content="fr"
property="og:type" content="article"
property="article:section" content="docs"
property="article:published_time" content="2021-10-24T00:00:00+00:00"
property="article:modified_time" content="2024-10-22T14:39:30+02:00"
itemprop="name" content="Optimiser le code SQL"
itemprop="description" content="Chapitre 08 - Optimiser le code SQL"
itemprop="datePublished" content="2021-10-24T00:00:00+00:00"
itemprop="dateModified" content="2024-10-22T14:39:30+02:00"
itemprop="wordCount" content="13986"
name="twitter:card" content="summary"
name="twitter:title" content="Optimiser le code SQL"
name="twitter:description" content="Chapitre 08 - Optimiser le code SQL"

Load Info

page size78544
load time (s)0.116251
redirect count1
speed download677103
server IP 195.154.191.111
* all occurrences of the string "http://" have been changed to "htt???/"