<?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 Homsys &#187; Optimisation</title>
	<atom:link href="http://blog.homsys.com/tag/optimisation/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.homsys.com</link>
	<description>Business Intelligence</description>
	<lastBuildDate>Fri, 10 Feb 2012 16:31:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Optimisation proc&#233;dure stock&#233;e param&#233;tr&#233;e sous SQL Server (optimisation reporting Services)</title>
		<link>http://blog.homsys.com/trucs-astuces/optimisation-procdure-stocke-paramtre-sous-sql-server-optimisation-reporting-services</link>
		<comments>http://blog.homsys.com/trucs-astuces/optimisation-procdure-stocke-paramtre-sous-sql-server-optimisation-reporting-services#comments</comments>
		<pubDate>Mon, 12 Sep 2011 09:50:28 +0000</pubDate>
		<dc:creator>Luc Rajagopalan</dc:creator>
				<category><![CDATA[Trucs & astuces]]></category>
		<category><![CDATA[Optimisation]]></category>
		<category><![CDATA[parameter sniffing]]></category>
		<category><![CDATA[parameter spoofing]]></category>
		<category><![CDATA[reporting services]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.homsys.com/?p=661</guid>
		<description><![CDATA[Je vous propose ici un retour d’expérience sur l’optimisation de procédures stockées SQL server. Cette optimisation est issue de recherche effectuée pour analyser des problèmes de lenteur sur des rapports Reporting Services utilisant des procédures stockées avec passage de paramètres.
Le cas m’est apparu en constatant que les temps d’exécution d’une même requête SQL pouvaient varier [...]]]></description>
			<content:encoded><![CDATA[<p>Je vous propose ici un retour d’expérience sur l’optimisation de procédures stockées SQL server. Cette optimisation est issue de recherche effectuée pour analyser des problèmes de lenteur sur des rapports Reporting Services utilisant des procédures stockées avec passage de paramètres.</p>
<p>Le cas m’est apparu en constatant que les temps d’exécution d’une même requête SQL pouvaient varier de 8s à plus de 10mn selon que je l’exécutais directement dans l’éditeur management Studio ou incorporée à une procédure stockée.</p>
<p>Ce problème est appelé « parameter sniffing ou spoofing». En synthèse, le moteur SQL Server essaye d’optimiser la requête en définissant un plan d’exécution basé sur les statistiques. Ces dernières sont établies lors de la première exécution de la requête et sont donc dépendantes de la valeur du paramètre utilisée pour cette exécution.</p>
<p>Ce plan d’exécution pose problème dès que la distribution des données est biaisée : certains paramètres vont retourner un petit nombre de lignes tandis que d’autres vont au contraire en renvoyer un grand nombre.</p>
<p>Le plan d’exécution n’étant pas recalculé à chaque fois, les temps ne sont plus optimisés.</p>
<p>Ci-dessous un exemple (source <a href="http://blogs.msdn.com/b/queryoptteam/archive/2006/03/31/565991.aspx">http://blogs.msdn.com/b/queryoptteam/archive/2006/03/31/565991.aspx</a>) afin d’expliquer avec plus de détails les points précédents :</p>
<p>Soit les objets suivants :</p>
<p>Une table t de 1002000 lignes avec 100000 lignes allant de 1 à 999999 et 2000 autres lignes avec la valeur 1000008.</p>
<table class="MsoTableGrid" style="border-collapse: collapse; border: medium none;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 13.95pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 13.95pt; border: 1pt solid #eeece1;" width="44" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; background: none repeat scroll 0% 0% #eeece1; height: 13.95pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">Col1</p>
</td>
</tr>
<tr style="height: 13.25pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 13.25pt;" width="44" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 13.25pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1</p>
</td>
</tr>
<tr style="height: 13.95pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 13.95pt;" width="44" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">2</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 13.95pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">2</p>
</td>
</tr>
<tr style="height: 17pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 17pt;" width="44" valign="bottom">
<p class="MsoNormal" style="line-height: normal; margin: 0cm 5.65pt 0pt;">…</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 17pt;" width="65" valign="bottom">
<p class="MsoNormal" style="line-height: normal; margin: 0cm 5.65pt 0pt;">…</p>
</td>
</tr>
<tr style="height: 14.65pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 14.65pt;" width="44" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1000000</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 14.65pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">999999</p>
</td>
</tr>
<tr style="height: 14.65pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 14.65pt;" width="44" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1000001</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 14.65pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1000008</p>
</td>
</tr>
<tr style="height: 14.75pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 14.75pt;" width="44" valign="bottom">
<p class="MsoNormal" style="line-height: normal; margin: 0cm 5.65pt 0pt;">…</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 14.75pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1000008</p>
</td>
</tr>
<tr style="height: 14.65pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 14.65pt;" width="44" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1002000</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 14.65pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1000008</p>
</td>
</tr>
</tbody>
</table>
<p>Soit la procédure stockée ci-joint interrogeant la table t.</p>
<div style="padding-bottom: 1pt; padding-left: 4pt; padding-right: 1pt; background: #eeece1; margin-left: 0cm; margin-right: 8cm; padding-top: 1pt; border: #eeece1 1pt solid;">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; background: #eeece1; border: medium none; padding: 0cm;"><span>CREATE</span><span> <span style="color: blue;">procedure</span> <span style="color: teal;">[dbo]</span><span style="color: gray;">.</span><span style="color: teal;">[foo]</span><span style="color: blue;"> </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; background: #eeece1; border: medium none; padding: 0cm;"><span>(</span><span>@p</span><span> <span style="color: blue;">int</span><span style="color: gray;">) </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; background: #eeece1; border: medium none; padding: 0cm;"><span>as </span></p>
<p class="MsoNormal" style="background: #eeece1; border: medium none; padding: 0cm;"><span lang="EN-US">select</span><span lang="EN-US"> <span style="color: gray;">*</span> <span style="color: blue;">from</span> <span style="color: teal;">t</span> <span style="color: blue;">where</span> <span style="color: teal;">col1</span> <span style="color: gray;">=</span> <span style="color: teal;">@p</span></span><span lang="EN-US"> </span></p>
</div>
<p>Une première analyse du plan d’exécution de la procédure stockée avec le paramètre ‘450’ nous donne les informations suivantes :</p>
<p><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/09/image2.png"><img style="border: 0px;" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/09/image_thumb2.png" border="0" alt="image" width="191" height="244" /></a></p>
<p>Il est estimé que le nombre de ligne est de 1 et le nombre de ligne renvoyé est aussi de 1.</p>
<p>Dans la deuxième exécution nous allons mettre le paramètre suivant : ‘1000008’ (qui représente 2000 lignes dans la base de données) et nous allons observer le plan d’exécution :</p>
<p><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/09/image3.png"><img style="border: 0px;" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/09/image_thumb3.png" border="0" alt="image" width="191" height="244" /></a></p>
<p>Le plan d’exécution estime que le nombre de lignes renvoyées est de 1 alors que le nombre de lignes retournées réellement est de 2000.</p>
<p>Ce plan d’exécution n’est pas optimisé pour le paramètre d’une valeur de ‘10000008’.</p>
<p>En effet le précédent paramètre fourni, d’une valeur de ‘450’, a été aspiré par l’optimiseur SQL et gardé en mémoire ; d’où la mauvaise estimation.</p>
<p>Pour remédier à ce problème et ainsi obtenir de meilleures performances, plusieurs solutions existent : la déclaration d’un paramètre en local (ainsi le paramètre ne peut être aspiré par l’optimiseur de requête SQL) ou l’ajout d’une option ‘‘recompile’’.</p>
<p>Exemple :</p>
<div>
<table class="MsoTableGrid" style="border-collapse: collapse; border: medium none;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding: 0cm 5.4pt; width: 232.2pt; background: none repeat scroll 0% 0% #eeece1; border: 1pt solid #eeece1;" colspan="2" width="310" valign="top">
<p class="MsoNormal" style="text-align: center; line-height: normal; margin-bottom: 0pt;"><strong>Déclaration d’une variable locale </strong></p>
</td>
</tr>
<tr style="height: 86.7pt;">
<td style="padding: 0cm 5.4pt; width: 232.2pt; background: none repeat scroll 0% 0% #f2f2f2; height: 86.7pt;" colspan="2" width="310" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">alter</span><span lang="EN-US"> <span style="color: blue;">procedure</span> <span style="color: teal;">[dbo]</span><span style="color: gray;">.</span><span style="color: teal;">[foo]</span><span style="color: blue;"> </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">(</span><span lang="EN-US">@p</span><span lang="EN-US"> <span style="color: blue;">int</span><span style="color: gray;">) </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">as </span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">declare</span><span lang="EN-US"> <span style="color: teal;">@p_local</span> <span style="color: blue;">int </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">set</span><span lang="EN-US"> <span style="color: teal;">@p_local</span><span style="color: gray;">=</span><span style="color: teal;">@p </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">select</span><span lang="EN-US"> <span style="color: gray;">*</span> <span style="color: blue;">from</span> <span style="color: teal;">t</span> <span style="color: blue;">where</span> <span style="color: teal;">col1</span> <span style="color: gray;">=</span> <span style="color: teal;">@p_local</span></span><span lang="EN-US"> </span></p>
</td>
</tr>
<tr style="height: 86.7pt;">
<td style="padding: 0cm 5.4pt; width: 117.3pt; background: none repeat scroll 0% 0% #f2f2f2; height: 86.7pt;" width="156" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span>@p=5 </span><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/image1.png"><img style="border-width: 0px;" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/image_thumb1.png" border="0" alt="image" width="197" height="244" /></a></p>
</td>
<td style="padding: 0cm 5.4pt; width: 114.9pt; background: none repeat scroll 0% 0% #f2f2f2; height: 86.7pt;" width="153" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span>@p=1000008 </span></p>
<p><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/09/image4.png"><img style="float: none; margin-left: auto; margin-right: auto; border: 0px;" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/09/image_thumb4.png" border="0" alt="image" width="194" height="244" /></a></td>
</tr>
</tbody>
</table>
</div>
<p>Dans le premier cas en déclarant une variable locale, le nombre estimé passe à 1,11332 lignes, qui correspondent au calcul suivant : [1/1000001 (nombre de valeur distinct)]*1002000(nombre total de lignes).</p>
<p>Cette première solution utilise les statistiques de la table pour estimer le nombre de lignes. Elle présente cependant un inconvénient quand les données ne sont pas réparties équitablement.</p>
<div>
<table class="MsoTableGrid" style="border-collapse: collapse; border: medium none;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding: 0cm 5.4pt; width: 232.2pt; background: none repeat scroll 0% 0% #eeece1; border: 1pt solid #eeece1;" colspan="2" width="310" valign="top">
<p class="MsoNormal" style="text-align: center; line-height: normal; margin-bottom: 0pt;"><strong>Option (recompile) </strong></p>
</td>
</tr>
<tr style="height: 86.7pt;">
<td style="padding: 0cm 5.4pt; width: 232.2pt; background: none repeat scroll 0% 0% #f2f2f2; height: 86.7pt;" colspan="2" width="310" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">alter</span><span lang="EN-US"> <span style="color: blue;">procedure</span> <span style="color: teal;">[dbo]</span><span style="color: gray;">.</span><span style="color: teal;">[foo]</span><span style="color: blue;"> </span><span style="color: gray;">(</span><span style="color: teal;">@p</span> <span style="color: blue;">int</span><span style="color: gray;">) </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">as </span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">select</span><span lang="EN-US"> <span style="color: gray;">*</span> <span style="color: blue;">from</span> <span style="color: teal;">t</span> <span style="color: blue;">where</span> <span style="color: teal;">col1</span> <span style="color: gray;">=</span> <span style="color: teal;">@p </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span>option</span><span>(</span><span>recompile</span><span>)</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US"> </span></p>
</td>
</tr>
<tr style="height: 86.7pt;">
<td style="padding: 0cm 5.4pt; width: 117.3pt; background: none repeat scroll 0% 0% #f2f2f2; height: 86.7pt;" width="156" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span>@p=5 </span><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/image2.png"><img style="border-width: 0px;" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/image_thumb2.png" border="0" alt="image" width="196" height="244" /></a></p>
</td>
<td style="padding: 0cm 5.4pt; width: 114.9pt; background: none repeat scroll 0% 0% #f2f2f2; height: 86.7pt;" width="153" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span>@p=1000008 </span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span><img style="float: none; margin-left: auto; margin-right: auto; border-width: 0px;" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/image_thumb3.png" border="0" alt="image" width="198" height="244" /></span></p>
</td>
</tr>
</tbody>
</table>
</div>
<p>Dans le deuxième cas, en utilisant l’option recompile, nous forçons le moteur à recompiler la requête SQL, ce qui peut être contraignant en terme de temps processeur si celle-ci est complexe, mais le plan d’exécution obtenu est toujours optimisé pour le paramètre aspiré.</p>
<p>Dans notre cas l’estimation du nombre de lignes correspond au résultat attendu.</p>
<p><span style="text-decoration: underline;">Bilan en termes de performances :</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="88" valign="top"></td>
<td width="108" valign="top"><strong>Défaut</strong></td>
<td width="110" valign="top"><strong>Variable locale</strong></td>
<td width="136" valign="top"><strong>Option recompile</strong></td>
</tr>
<tr>
<td width="88" valign="top"><strong>@p=5</strong></td>
<td width="108" valign="top">91 ms</td>
<td width="110" valign="top">89 ms</td>
<td width="136" valign="top">87 ms</td>
</tr>
<tr>
<td width="88" valign="top"><strong>@p=1000008</strong></td>
<td width="108" valign="top">288 ms</td>
<td width="110" valign="top">255 ms</td>
<td width="136" valign="top">166 ms</td>
</tr>
</tbody>
</table>
<p>Ci-dessus les temps écoulés lors de l’exécution de la procédure stockée. Dans le cas par défaut le paramètre @p=5 a été aspiré, ce qui induit un temps d’exécution de 288 ms pour le paramètre @p=1000008.</p>
<p>En comparaison, le fait de déclarer une variable locale ou de mettre en place une option recompile ne change pas les temps de traitement pour le paramètre @p=5, les nombres de lignes estimés étant proches, les temps sont quasi-identiques. Cependant, une différence est notable avec le paramètre @p=1000008 : avec l’option recompile, la procédure stockée possède un plan d’exécution optimisé, d’où une meilleur performance. Dans le cas de la déclaration en locale d’une variable avec @p=1000008, le plan étant optimisé à l’aide des statistiques (estimation de 1,1 lignes par résultat) le temps d’exécution reste important face à l’option recompile mais préférable à celui par défaut.</p>
<p>En conclusion, en fonction des cas de figure rencontrés (données biaisées, procédure stockée complexe …), il est préférable d’utiliser l’une des solutions proposées.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.homsys.com/trucs-astuces/optimisation-procdure-stocke-paramtre-sous-sql-server-optimisation-reporting-services/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL-Server : Comment évaluer la qualité d&#8217;indexes et faire les REBUILD et REORGANIZE en conséquence ?</title>
		<link>http://blog.homsys.com/trucs-astuces/sql-server-comment-evaluer-la-qualite-dindexes-et-faire-les-rebuild-et-reorganize-en-consequence</link>
		<comments>http://blog.homsys.com/trucs-astuces/sql-server-comment-evaluer-la-qualite-dindexes-et-faire-les-rebuild-et-reorganize-en-consequence#comments</comments>
		<pubDate>Fri, 08 Jan 2010 10:14:57 +0000</pubDate>
		<dc:creator>Clément Lefaure</dc:creator>
				<category><![CDATA[Trucs & astuces]]></category>
		<category><![CDATA[Indexe]]></category>
		<category><![CDATA[Optimisation]]></category>
		<category><![CDATA[rebuild]]></category>
		<category><![CDATA[reorganize]]></category>
		<category><![CDATA[SQL-Server]]></category>

		<guid isPermaLink="false">http://blog.homsys.com/?p=192</guid>
		<description><![CDATA[Afin de profiter pleinement de l&#8217;optimisation des temps de réponses que procurent les indexes, il ne faut pas oublier de prévoir une tâche régulière d&#8217;&#160;&#187;entretien&#160;&#187;. Elle consiste à effectuer des REBUILD ou des REORGANIZE en fonction de l&#8217;état de fragmentation de l&#8217;indexe. Cette tâche pourra ensuite être intégrée à un job de chargement quotidien par [...]]]></description>
			<content:encoded><![CDATA[<p>Afin de <strong>profiter pleinement de l&#8217;optimisation</strong> des temps de réponses que procurent les <strong>indexes</strong>, il ne faut pas oublier de prévoir <strong>une tâche régulière d&#8217;&nbsp;&raquo;entretien&nbsp;&raquo;</strong>. Elle consiste à effectuer des REBUILD ou des REORGANIZE en fonction de l&#8217;état de fragmentation de l&#8217;indexe. Cette tâche pourra ensuite être intégrée à un job de chargement quotidien par exemple.</p>
<p>Voici un récapitulatif des &laquo;&nbsp;best practises&nbsp;&raquo; en la matière.</p>
<h4>Astuce</h4>
<p>Utiliser la fonction &#8216;<strong>sys.dm_db_index_physical_stats</strong>&#8216; et son champ &#8216;<strong>avg_fragmentation_in_percent</strong>&#8216;</p>
<h4>Syntaxe</h4>
<p style="padding-left: 30px">sys.dm_db_index_physical_stats (<br />
{ database_id | NULL }<br />
, { object_id | NULL }<br />
, { index_id | NULL | 0 }<br />
, { partition_number | NULL }<br />
, { mode | NULL | DEFAULT }<br />
)</p>
<h4>Exemple</h4>
<p style="padding-left: 30px">SELECT b.name, a.* FROM<br />
sys.dm_db_index_physical_stats (<br />
DB_ID(N&#8217;Ma_base&#8217;)<br />
, OBJECT_ID(N&#8217;dbo.Ma_table&#8217;)<br />
, NULL<br />
, NULL<br />
, DEFAULT<br />
) AS a<br />
JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id</p>
<p style="padding-left: 30px">
<h4>Recommendations Microsoft<span style="text-decoration: underline"><br />
</span></h4>
<table border="2">
<tbody>
<tr>
<td>Valeur de avg_fragmentation_in_percent</td>
<td>Correction à apporter</td>
</tr>
<tr>
<td>&gt; 5% et &lt; = 30%</td>
<td>ALTER INDEX <strong>REORGANIZE</strong></td>
</tr>
<tr>
<td>&gt; 30%</td>
<td>ALTER INDEX <strong>REBUILD</strong> WITH (ONLINE = ON)</td>
</tr>
</tbody>
</table>
<h4>Exemples</h4>
<p style="padding-left: 30px">ALTER INDEX [Mon_indexe] ON  dbo.Ma_table REBUILD<br />
ALTER INDEX [Mon_indexe] ON  dbo.Ma_table REORGANIZE</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.homsys.com/trucs-astuces/sql-server-comment-evaluer-la-qualite-dindexes-et-faire-les-rebuild-et-reorganize-en-consequence/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

