<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog SQL d&#039;un développeur Microsoft. &#187; Optimisation</title>
	<atom:link href="https://blog.developpez.com/ylarvor/pcategory/optimisation/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/ylarvor</link>
	<description>SQL or No-SQL !</description>
	<lastBuildDate>Sat, 04 Jun 2016 19:39:50 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>[SGBD] [Optimisation] Pourquoi l&#8217;écriture de fonctions encapsulées est à bannir en SQL ?</title>
		<link>https://blog.developpez.com/ylarvor/p5382/optimisation/tuning/sgbd_optimisation_avant_d_optimiser_comm</link>
		<comments>https://blog.developpez.com/ylarvor/p5382/optimisation/tuning/sgbd_optimisation_avant_d_optimiser_comm#comments</comments>
		<pubDate>Thu, 27 Mar 2008 20:00:00 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Je voudrais revenir sur un article de Rudi éclairant pour moi : http://rudi.developpez.com/sqlserver/tutoriel/optimisation/ Dans cet article, il écrit &#171;&#160;Une erreur commune, qui peut affecter fortement les performances, est d&#8217;écrire du code SQL avec la même approche intellectuelle que pour l&#8217;écriture de code procédural.&#160;&#187; Dans mon entreprise, nous avons une base qui a été conçu sur [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je voudrais revenir sur un article de Rudi éclairant pour moi :</p>
<p><a href="http://rudi.developpez.com/sqlserver/tutoriel/optimisation/" target="top">http://rudi.developpez.com/sqlserver/tutoriel/optimisation/</a></p>
<p>Dans cet article, il écrit &laquo;&nbsp;Une erreur commune, qui peut affecter fortement les performances, est d&rsquo;écrire du code SQL avec la même approche intellectuelle que pour l&rsquo;écriture de code procédural.&nbsp;&raquo;<br />
<span id="more-11"></span><br />
Dans mon entreprise, nous avons une base qui a été conçu sur ce principe de l&rsquo;encapsulation. Les requêtes de cette base, assez complexes, ont été rendu lisibles par l&rsquo;application des principes du développement procédurale : &laquo;&nbsp;découpe et place dans des blocs plus petits&nbsp;&raquo;.</p>
<p>Cette base utilise donc de nombreuses fonctions tables. des fonctions. des fonctions à l&rsquo;intérieur de fonctions tables. des fonctions tables à l&rsquo;intérieur de fonctions tables&#8230;</p>
<p>Le résultat est <strong>lisible</strong> mais <strong>contre-performant </strong> comme l&rsquo;explique rudi dans la partie II-D-1.</p>
<p>Par conséquent, si vous avez en charge le développement de requêtes, de procédures stockées : <strong>Oubliez </strong>ce que vous avez appris comme bon développeur, <strong>ne réutilisez pas</strong>, <strong>n&rsquo;encapsulez pas</strong>, <strong>soyez économe</strong> avec les fonctions T-SQL.</p>
<p>Pour obtenir une requête rapide, vous devez écrire une requête littérale! d&rsquo;un bloc! Pour rendre lisible, indentez! Organisez les jointures mais n&rsquo;encapsulez pas! Ne factorisez pas en SQL !</p>
<p>Bon coding!</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SGBD] Pourquoi utiliser les Compteur &#8230; Reads plutôt que la durée de la requête ?</title>
		<link>https://blog.developpez.com/ylarvor/p5347/optimisation/tuning/dba_compteur_duration_aamp_analyse_reads</link>
		<comments>https://blog.developpez.com/ylarvor/p5347/optimisation/tuning/dba_compteur_duration_aamp_analyse_reads#comments</comments>
		<pubDate>Fri, 21 Mar 2008 16:45:57 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Apprenti DBA, je viens d&#8217;apprendre pourquoi les DBA Production utilisent les compteurs &#171;&#160;logical reads,physical reads&#8230;&#160;&#187; plutôt que la durée de la requête. Ecoutez donc&#8230; En bon développeur, je me disais que la trace DURATION du profiler fournissait toute l&#8217;information nécessaire, une requête de plus de 10 secondes, était une requête à corriger! En effet, cela [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Apprenti DBA, je viens d&rsquo;apprendre pourquoi les DBA Production utilisent les compteurs &laquo;&nbsp;logical reads,physical reads&#8230;&nbsp;&raquo; plutôt que la durée de la requête. Ecoutez donc&#8230;<br />
<span id="more-10"></span><br />
En bon développeur, je me disais que la trace DURATION du profiler fournissait toute l&rsquo;information nécessaire, une requête de plus de 10 secondes, était une requête à corriger!<br />
En effet, cela se vérifie sur un serveur faiblement sollicité mais dans des configurations fortement sollicitées comme celles que rencontrent les DBA Production, la durée ne veut plus rien dire suivant l&rsquo;heure de la journée.En effet, dans ces configurations, la durée de la requête devient variable en fonction de la charge du serveur.</p>
<p>Pour trouver des repères pour l&rsquo;optimisation de la requête, on doit alors prendre des données fixes comme le nombres d&rsquo;accès en lecture physique, logique&#8230; </p>
<p>Je vous rappelle que ce qui est le plus consommateur en temps dans une requête, ce sont les accès physiques au disque. </p>
<p>Si on réduit le nombre d&rsquo;accès, on réduit proportionnellement la durée de la requête quelque soit la charge du serveur.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[sql serveur] Quels sont les outils pour indexer les tables en amont, pendant la modélisation ?</title>
		<link>https://blog.developpez.com/ylarvor/p5210/optimisation/index/sql_serveur_indexation_d_une_base_gagner</link>
		<comments>https://blog.developpez.com/ylarvor/p5210/optimisation/index/sql_serveur_indexation_d_une_base_gagner#comments</comments>
		<pubDate>Tue, 04 Mar 2008 13:07:46 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Index]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Si vous possèdez Power AMC, cet article ne s&#8217;adresse pas à vous car Power AMC indexe toutes les clefs étrangères sur simple demande, par contre, si vous utilisez Toad Data Modeler 4.1, vous devez préciser pour chaque entite, la création de l&#8217;index de clef etrangère. Sachez que vous pouvez gagner un temps précieux dans le [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Si vous possèdez Power AMC, cet article ne s&rsquo;adresse pas à vous car Power AMC indexe toutes les clefs étrangères sur simple demande, par contre, si vous utilisez Toad Data Modeler 4.1, vous devez préciser pour chaque entite, la création de l&rsquo;index de clef etrangère.<br />
Sachez que vous pouvez gagner un temps précieux dans le temps d&rsquo;execution de vos requêtes en indexant les clés étrangères de vos tables. c&rsquo;est un travail facile, les clés étrangères sont identifiés, il suffit de créer un index sur la clé manuellement ou à l&rsquo;aide d&rsquo;un outil.Toutes les jointures s&rsquo;en trouveront améliorées. Avant de vous cassez la tête en index recouvrant et autre analyses complexes&#8230; Pensez y! Ca a le mérite d&rsquo;être simple et efficace.</p>
<p>Vous pouvez utiliser aussi le tuning advisor de 2005 ou l&rsquo;index tuning wizard de 2000.<br />
<a href="http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/tunesql.mspx" target="_new">http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/tunesql.mspx</a></p>
<p>Vous devez néanmoins mesurer à postériori, le gain de la pause de votre index, sur les différentes requêtes&#8230; En effet,Selon Yves Drothier de JDN :</p>
<p>&laquo;&nbsp;Par défaut, les clés primaires des tables disposent d&rsquo;un index et il est pertinent de le conserver mais les clés secondaires posent un problème plus complexe. Parfois, selon le volume, la sollicitation de la base ou l&rsquo;évolution des applications métiers, les index des clés secondaires perdent de leur attrait. Il est donc préférable de poser ses index en mesurant régulièrement l&rsquo;efficacité de ses requêtes.&nbsp;&raquo;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Comment indexer les tables en aval, en production ?</title>
		<link>https://blog.developpez.com/ylarvor/p4929/optimisation/index/optimisation_dune_base_de_donnes_index_p</link>
		<comments>https://blog.developpez.com/ylarvor/p4929/optimisation/index/optimisation_dune_base_de_donnes_index_p#comments</comments>
		<pubDate>Sun, 24 Jun 2007 11:00:00 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Index]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Pour indexer une base de données, utiliser l&#8217;assistant parametrage du moteur de bases de données sql serveur 2005. Dans un premier temps, il est nécessaire de capturer une trace à l&#8217;aide du query analyser. On stocke l&#8217;information dans un fichier ou une table de bases de données.exemple :USE AdventureWorksSELECT *FROM Production.ProductORDER BY Name ASC ; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Pour indexer une base de données, utiliser l&rsquo;assistant parametrage du moteur de bases de données sql serveur 2005.</p>
<p>Dans un premier temps, il est nécessaire de capturer une trace à l&rsquo;aide du query analyser. On stocke l&rsquo;information dans un fichier ou une table de bases de données.<br />exemple :<br />USE AdventureWorks<br />SELECT *<br />FROM Production.Product<br />ORDER BY Name ASC ;</p>
<p>Dans un second temps, on lance l&rsquo;assistant parametrage du moteur de bases de données, on indique sur quel trace on va travailler, sur quel base et quel table portera l&rsquo;analyse. On lance le conseiller et il nous fournit des recommandations.</p>
<p>Dans le cas présent, un index portant sur name.</p>
<p>Attention! sur des petites requetes ( 20 lignes ), le temps d&rsquo;execution est trop court pour pouvoir mettre en place une optimisation. Meme si l&rsquo;analyse de la requete permet d&rsquo;imaginer la mise en place d&rsquo;un index.</p>
<p>exemple :<br />USE Test<br />SELECT item,color,sum(quantity)FROM inventory2 GROUP BY item,color,quantity order by quantity</p>
<p>un webcast pour comprendre sur le site technet :</p>
<p><a href="http://www.microsoft.com/France/Vision/ListTechNet.aspx?Qry=module+17&amp;S=x&amp;amp;amp;amp;Did=56042EEA-FE57-4207-9FB0-538F1025C49A&amp;Pid=&amp;Nid=&amp;Cid=64ed8bfb-e127-4346-ad6f-2c93ccd6f991&amp;Tid=&amp;x=24&amp;y=13" target="_new">http://www.microsoft.com/France/Vision/ListTechNet.aspx?Qry=module+17&amp;S=x&amp;amp;amp;amp;Did=56042EEA-FE57-4207-9FB0-538F1025C49A&amp;Pid=&amp;Nid=&amp;Cid=64ed8bfb-e127-4346-ad6f-2c93ccd6f991&amp;Tid=&amp;x=24&amp;y=13</a></p>
<p>un didactiel microsoft :<br /><a href="http://technet.microsoft.com/fr-fr/library/ms166575.aspx" target="_new">http://technet.microsoft.com/fr-fr/library/ms166575.aspx</a></p>
<p>Pour information, il existe aussi un outil de paramétrage des index sous sql serveur 2000.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A quel moment doit avoir lieu l&#8217;optimisation d&#8217;une base ?</title>
		<link>https://blog.developpez.com/ylarvor/p5023/ecosysteme/pointdevue/developpeur_de_bases_de_donnees_un_poste</link>
		<comments>https://blog.developpez.com/ylarvor/p5023/ecosysteme/pointdevue/developpeur_de_bases_de_donnees_un_poste#comments</comments>
		<pubDate>Wed, 16 Jan 2008 16:06:35 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[PointDeVue]]></category>
		<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[L&#8217; importance de la normalisation de la base est essentiel. Le modèle relationnelle a fait passer le gros du travail de la partie développement à la partie conception. L&#8217; Architecte de la base, premier intervenant du projet, qui utilise POWER AMC ou Toad Data Modeler doit respecter absolument la 3 ème forme normale dans la [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>L&rsquo; importance de la normalisation de la base est essentiel</strong>. Le modèle relationnelle a fait passer le gros du travail de la partie développement à la partie conception.<br />
L&rsquo; Architecte de la base, premier intervenant du projet, qui utilise POWER AMC ou Toad Data Modeler doit respecter absolument la 3 ème forme normale dans la définition de son modèle. On ne peut pas faire l&rsquo; économie d&rsquo;un modéle relationnel dans la conception d&rsquo; une application.</p>
<p><strong>Le deuxième pôle de l&rsquo; optimisation est le soin apporté à l&rsquo; écriture du SQL</strong>. Privilégié le plus possible l&rsquo; écriture de SQL à l&rsquo; écriture de Transact SQL. L&rsquo; utilisation de SQL permet l&rsquo; indexation et des performances supérieurs. Par exemple, la semaine dernière, mon patron me signale une application dont les temps de réponses dépassés 30 secondes. Fier de mes connaissances, je propose d&rsquo; optimiser la requête par une indexation adéquate. Je passe 3H00 sur la requête pour finalement découvrir que les 30 secondes sont perdus par l&rsquo; utilisation en cascade de fonctions. Évidemment, en tant que développeur, on doit répondre à des besoins fonctionnelles et l&rsquo;encapsulation en fonction répond bien à nos besoins mais en production, avec 100000 lignes dans une table, on perd un temps précieux à l&rsquo; exécution.</p>
<p><strong>Le troisième pôle de l&rsquo; optimisation est l&rsquo; indexation</strong>. Sur des tables de plus de 1000 lignes, il devient important d&rsquo; indexer. Un produit comme POWER AMC vous facilite le travail puisqu&rsquo; il génére la majorité des index à la conception pour des tables bien normalisé.</p>
<p>On découvre donc bien que l&rsquo; essentiel de l&rsquo; optimisation d&rsquo; une base de données ne se passe pas donc pas en production, par le DBA, mais lors de la fabrication, par le développeur et l&rsquo;architecte de la base. </p>
<p>Ne simplifions pas trop, les développeurs règlent généralement très bien les problèmes apparents et les problèmes de performances apparaissent souvent très tard dans le cycle de vie et entraîne des interventions des DBA. Néanmoins, la montée en charge future d&rsquo; une application peut être prévu très tôt par le respect de normes.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>choix des tables et colonnes à indexer.</title>
		<link>https://blog.developpez.com/ylarvor/p4916/optimisation/index/choix_des_tables_et_colonnes_indexer</link>
		<comments>https://blog.developpez.com/ylarvor/p4916/optimisation/index/choix_des_tables_et_colonnes_indexer#comments</comments>
		<pubDate>Sat, 25 Aug 2007 11:00:00 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Index]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Indexer&#8230; les tables qui ont de nombreuses lignes ( au moins 100 000 ). les colonnes souvent utilisées dans les requetes. les colonnes utilisées dans les fonctions d&#8217;agregation les colonnes utilisées dans les requetes group by les colonnes utilisées dans les requetes order by les colonnes utilisées dans les jointures, nottament les clef étrangères! Ne [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>Indexer&#8230;</strong><br />
les tables qui ont de nombreuses lignes ( au moins 100 000 ).<br />
les colonnes souvent utilisées dans les requetes.<br />
les colonnes utilisées dans les fonctions d&rsquo;agregation<br />
les colonnes utilisées dans les requetes group by<br />
les colonnes utilisées dans les requetes order by<br />
les colonnes utilisées dans les jointures, nottament les clef étrangères!</p>
<p><strong>Ne pas indexer&#8230;</strong><br />
Les tables qui ont peu de lignes ( moins de 10 000 )<br />
Les colonnes utilisées rarement dans les requêtes<br />
Les colonnes de taille importante<br />
Les colonnes souvent modifiées mais peu interrogées.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dénormaliser une base de données.</title>
		<link>https://blog.developpez.com/ylarvor/p4897/optimisation/tuning/dnormaliser_une_base_de_donnes</link>
		<comments>https://blog.developpez.com/ylarvor/p4897/optimisation/tuning/dnormaliser_une_base_de_donnes#comments</comments>
		<pubDate>Thu, 06 Dec 2007 11:00:00 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Pour optimiser une requete, la premiere des choses à faire, si la ou les tables comptent plusieurs miliers d&#8217;enregistrement avec des valeurs trés différentes, est de placer des index, de faire tourner et de supprimer les index non utilisés. Si vous avez exploré toute les possibilités des index, et que votre requete est toujours trop [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Pour optimiser une requete, la premiere des choses à faire, si la ou les tables comptent plusieurs miliers d&rsquo;enregistrement avec des valeurs trés différentes, est de placer des index, de faire tourner et de supprimer les index non utilisés. Si vous avez exploré toute les possibilités des index, et que votre requete est toujours trop lente, la solution est la denormalisation. La dénormalisation doit être utilisée sans complexe dans les bases en lecture seule, sans mise à jour. Dans les bases transactionnelles, il est nécessaire de mettre en place des triggers pour assurer la cohérence de la base.</p>
<p>Imaginez deux tables en 3 eme forme normale.<br />element(idelement,nomelement)<br />structure(id, nom, idelement )<br />la dénormalisation consiste à garder element à l&rsquo;identique et modifier structure de la façon suivante (2 eme forme normale):<br />structure(id,nom,idelement,nomelement)<br />ainsi la requete associant element et structure est instantannée&#8230;<br />SELECT id,nom,nomelement from structure.</p>
<p>bon developpement</p>
<p>pour aller plus loin, un debat : <a href="http://www.developpez.net/forums/showthread.php?t=6231">http://www.developpez.net/forums/showthread.php?t=6231</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FILL_FACTOR  : Définir le remplissage de l&#8217;index.</title>
		<link>https://blog.developpez.com/ylarvor/p4918/optimisation/index/fill_factor_dfinir_le_remplissage_de_lindex</link>
		<comments>https://blog.developpez.com/ylarvor/p4918/optimisation/index/fill_factor_dfinir_le_remplissage_de_lindex#comments</comments>
		<pubDate>Fri, 24 Aug 2007 11:00:00 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Index]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[&#171;&#160;Le remplissage de l&#8217;index par defaut determine la quantité d&#8217;espace que SQL Serveur doit réserver lorsqu&#8217;il crée un nouvel index avec les données existantes. La définitition du facteur de remplissage suppose un compromis ; si vous définissez un facteur trop élevé, SQL Serveur ralentit lorsque vous ajoutez des données à une table. Toutefois, un facteur [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>&laquo;&nbsp;Le remplissage de l&rsquo;index par defaut determine la quantité d&rsquo;espace que SQL Serveur doit réserver lorsqu&rsquo;il crée un nouvel index avec les données existantes. La définitition du facteur de remplissage suppose un compromis ; si vous définissez un facteur trop élevé, SQL Serveur ralentit lorsque vous ajoutez des données à une table. Toutefois, un facteur de remplissage fixé trop bas risque d&rsquo;affecter les performances en lecture de façon inversement proportionnelle au facteur de remplissage. Par exemple, un taux de remplissage de 25% peut diviser les performances en lecture par 4, mais il permet d&rsquo;accomplir plus rapidement des mises à jour importantes qu&rsquo;à l&rsquo;origine.&nbsp;&raquo;</p>
<p>Par défaut, le remplissage de l&rsquo;index est établi à 0. Mais la plage admise s&rsquo;etend de 0 à 100.</p>
<p>Pour définir un facteur de remplissage, une valeur faible laisse plus de place pour les insertions sans necessiter de fractionnements de pages, mais l&rsquo;index est plus encombrant.<br />Une valeur forte laisse moins de place aux insertions mais l&rsquo;index prend moins de place.</p>
<p>exemple: sp_configure &laquo;&nbsp;fill factor (%)&nbsp;&raquo;,90</p>
<p>cet exemple configure la valeur par defaut du serveur</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>INDEX.</title>
		<link>https://blog.developpez.com/ylarvor/p4975/optimisation/index/index</link>
		<comments>https://blog.developpez.com/ylarvor/p4975/optimisation/index/index#comments</comments>
		<pubDate>Thu, 03 May 2007 11:00:00 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Index]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[La syntaxe d&#8217;utilisation de CREATE INDEX est la suivante : CREATE [UNIQUE] [CLUSTEREDNONCLUSTERED] INDEX nom_index ON nom_table( nom_colonne, nom_colonne&#8230; ) WITH options ON nom_groupe_de_fichier. Un index CLUSTERED contient les données de la table. Par conséquent, il ne peut y avoir qu&#8217;un seul index Clustered par table. En contrepartie, Microsoft met en garde contre l&#8217;utilisation de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La syntaxe d&rsquo;utilisation de CREATE INDEX est la suivante :</p>
<p>CREATE [UNIQUE] [CLUSTEREDNONCLUSTERED] INDEX nom_index ON nom_table<br />( nom_colonne, nom_colonne&#8230; ) WITH options ON nom_groupe_de_fichier.</p>
<p>Un index CLUSTERED contient les données de la table. Par conséquent, il ne peut y avoir qu&rsquo;un seul index Clustered par table. En contrepartie, Microsoft met en garde contre l&#8217;utilisation de cette structure quand les enregistrements sont de taille importante car on ne peut alors mettre que peu d&#8217;enregistrements dans un noeud de l&#8217;arbre, ce qui risque de faire perdre à l&#8217;index une partie de son efficacité.</p>
<p>Un index est performant pour la recherche sur<br />- une clef : SELECT * FROM Film WHERE Titre=&rsquo;Gladiator&rsquo;<br />- un intervalle : SELECT * FROM Film WHERE Annee BETWEEN 1999 AND 2001<br />- ou une partie de la clé : SELECT * FROM Film WHERE Titre LIKE &lsquo;G%&rsquo;</p>
<p>Les options :</p>
<p>PAD_INDEX : utilisé avec le paramètre FILL_FACTOR; indique qu&rsquo;il faut laisser de l&rsquo;espace dans les noeuds branches et pas seulement dans les noeuds feuilles.<br />FILL_FACTOR : spécifie le degre de remplissage de chaque noeud feuille; pourcentage compris entre 0 et 100. 0 est une valeur particulière, la gestion est laissée à sql server.<br />DROP_EXISTING : indique que si il existe deja un index portant ce nom, cet index sera supprimé puis recree avec la nouvelle définition.<br />ONLINE : commande de sql server 2005 enterprise , les tables sont accessibles en requete et modification durant les opérations d&rsquo;indexation.<br />SORT_IN_TEMPDB : par default, OFF, les résultats des tris sont calculés dans la base courante. Sur ON, les résultats des tris sont stockées dans TEMPDB.</p>
<p>exemple :</p>
<p>CREATE CLUSTERED INDEX item_index ON INVENTORY(item) WITH ( PAD_INDEX=ON,FILLFACTOR=50 )</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
