<?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/"
	>

<channel>
	<title>Le Blog D'Arnaud Georgin &#187; MySQL</title>
	<atom:link href="http://arnaudgeorgin.blogcity.fr/category/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://arnaudgeorgin.blogcity.fr</link>
	<description>Blog sur le développement informatique</description>
	<pubDate>Fri, 15 Jan 2010 08:49:35 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Afficher le plan d&#8217;execution d&#8217;une requête MySql</title>
		<link>http://arnaudgeorgin.blogcity.fr/2009/02/23/afficher-le-plan-dexecution-dune-requete-mysql/</link>
		<comments>http://arnaudgeorgin.blogcity.fr/2009/02/23/afficher-le-plan-dexecution-dune-requete-mysql/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 16:52:33 +0000</pubDate>
		<dc:creator>ageorgin</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[developpement]]></category>

		<category><![CDATA[optimisation]]></category>

		<guid isPermaLink="false">http://arnaudgeorgin.blogcity.fr/?p=117</guid>
		<description><![CDATA[Mysql offre la possibilité d&#8217;afficher à l&#8217;utilisateur le plan d&#8217;exécution pour une requête données. Pour cela, il suffit de précéder la requête à analyser de l&#8217;instruction EXPLAIN.
Ainsi utilisé, MySql affiche en résultat à l&#8217;utilisateur un tableau permettant de détailler comment l&#8217;optimiseur de requête va exécuter celle-ci. C&#8217;est ce qu&#8217;on appelle le plan d&#8217;exécution. Le tableau [...]]]></description>
			<content:encoded><![CDATA[<p>Mysql offre la possibilité d&#8217;afficher à l&#8217;utilisateur le plan d&#8217;exécution pour une requête données. Pour cela, il suffit de précéder la requête à analyser de l&#8217;instruction <strong>EXPLAIN</strong>.</p>
<p>Ainsi utilisé, MySql affiche en résultat à l&#8217;utilisateur un tableau permettant de détailler comment l&#8217;optimiseur de requête va exécuter celle-ci. C&#8217;est ce qu&#8217;on appelle le plan d&#8217;exécution. Le tableau affiché en résultat peu contenir de 1 à plusieurs lignes.</p>
<p>Dans le cas d&#8217;une requête simple, ce tableau contiendra une ligne.</p>
<p>Dans le cas d&#8217;une requête contenant deux instructions SELECT associées avec la clause UNION, le tableau contiendra trois lignes :</p>
<ul>
<li>une ligne pour chaque exécution de l&#8217;instruction SELECT,</li>
<li>une ligne pour le résultat de l&#8217;instruction UNION</li>
</ul>
<p>Le tableau affiché contient les colonnes suivantes :</p>
<ul>
<li><strong>id</strong> : L&#8217;identifiant de l&#8217;instruction SELECT. Correspond au numéro de l&#8217;instruction SELECT au sein de la requête. Est utilisé dans le cas où l&#8217;optimiseur va effectuer plusieurs instructions SELECT (comme dans l&#8217;utilisation de la clause UNION par exemple),</li>
<li><strong>select_type</strong> : le type d&#8217;instruction SELECT que l&#8217;optimiseur va exécuter. Les différents types sont :
<ol>
<li>SIMPLE : exécution d&#8217;une instruction SELECT simple (par de select imbriqué ou de clause UNION)</li>
<li>PRIMARY : SELECT principal dans une requête avec des instructions select imbriquées</li>
<li>UNION : seconde ou dernière instruction SELECT d&#8217;une requête contenant la clause UNION</li>
<li>DEPENDANT UNION : seconde ou dernière instruction SELECT d&#8217;une requête contenant la clause UNION qui dépend d&#8217;une requête externe</li>
<li>UNION RESULT : le résultat de la clause UNION (après exécution de l&#8217;ensemble des instructions SELECT)</li>
<li>SUBQUERY : première instruction SELECT dans une requête contenant des select imbriqués</li>
<li>DERIVED : résultat de l&#8217;instruction SELECT d&#8217;une requête imbriquée dans la clause FROM</li>
</ol>
</li>
</ul>
<ul>
<li><strong>table</strong> : le nom de la table contenant les lignes retournées par la clause SELECT de la requête</li>
<li><strong>type</strong> : le type de jointure utilisé sur la table dans la requête</li>
<li><strong>possible_keys</strong> : cette colonne indique les index que MySQL peut utiliser pour trouver les lignes utiles dans la tables</li>
<li><strong>key</strong> : cette colonne indique l&#8217;index que MySQL a décidé d&#8217;utiliser. La valeur de cette colonne vaut NULL si MySQL n&#8217;a pas utilisé d&#8217;index.</li>
<li><strong>key_len</strong> : cette colonne indique la longueur de l&#8217;index que MySQL a décidé d&#8217;utiliser.</li>
<li><strong>ref</strong> : cette colonne affiche qu&#8217;elles colonnes de la table ou constantes ont été comparées à l&#8217;index afin de trouver les lignes utiles dans la table</li>
<li><strong>rows</strong> : cette colonne affiche le nombre de lignes de la table que MySQL devra exéminer pour exécuter cette partie de la requête</li>
<li><strong>extra</strong> : cette colonne affiche des informations supplémentaires sur la manière utilisée par MySQL pour résoudre la requête</li>
</ul>
<p>L&#8217;utilisation du plan d&#8217;exécution est indispensable afin de comprendre comment MySQL exécute une requête et ainsi optimiser les performances. Cette instruction vous permet notamment d&#8217;identifier si la requête utilise des index ou pas.</p>
<div style="text-align:center;margin: 12px;"><script type="text/javascript"><!--
google_ad_client = "pub-5643900331278631";
/* 468x60, bas posts */
google_ad_slot = "3731472094";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>]]></content:encoded>
			<wfw:commentRss>http://arnaudgeorgin.blogcity.fr/2009/02/23/afficher-le-plan-dexecution-dune-requete-mysql/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
