<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Les index MySQL : types, placements, efficacité</title>
	<atom:link href="http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/</link>
	<description>le blog français sur les SGBD - MySQL, Oracle et plus...</description>
	<pubDate>Sat, 22 Nov 2008 02:56:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
		<item>
		<title>By: ooten</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/#comment-854</link>
		<dc:creator>ooten</dc:creator>
		<pubDate>Sat, 20 Sep 2008 11:11:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-854</guid>
		<description>Superbe post ! Depuis hier soir j'ai un peu parcouru le blog, j'apprécie beaucoup.
Merci.</description>
		<content:encoded><![CDATA[<p>Superbe post ! Depuis hier soir j&#8217;ai un peu parcouru le blog, j&#8217;apprécie beaucoup.<br />
Merci.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dbnewz &#187; Blog Archive &#187; Cardinalité, sélectivité et distributivité d&#8217;un index MySQL : quel impact sur le plan d&#8217;exécution ?</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/#comment-848</link>
		<dc:creator>dbnewz &#187; Blog Archive &#187; Cardinalité, sélectivité et distributivité d&#8217;un index MySQL : quel impact sur le plan d&#8217;exécution ?</dc:creator>
		<pubDate>Fri, 05 Sep 2008 07:51:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-848</guid>
		<description>[...] un rappel sur les différents types d'index disponibles, ce billet précédent est tout indiqué.Appliquons notre requête à notre jeu d&#8217;essai :mysql&#62; SELECT [...]</description>
		<content:encoded><![CDATA[<p>[...] un rappel sur les différents types d&#8217;index disponibles, ce billet précédent est tout indiqué.Appliquons notre requête à notre jeu d&#8217;essai :mysql&gt; SELECT [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: DI</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/#comment-827</link>
		<dc:creator>DI</dc:creator>
		<pubDate>Mon, 21 Jul 2008 09:51:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-827</guid>
		<description>Merci pour la réponse ..

En fait, c'est une question que je me posais depuis longtemps et, même si Google est mon ami, j'ai jamais trouvé la réponse de façon claire .. ni pris le temps d'investiguer ou de faire des tests (honte à moi !!).

Sinon, pour compléter un oubli sur mon commentaire précédent, je reprends Collobian à propos du post : "Excellent, et salutaire."</description>
		<content:encoded><![CDATA[<p>Merci pour la réponse ..</p>
<p>En fait, c&#8217;est une question que je me posais depuis longtemps et, même si Google est mon ami, j&#8217;ai jamais trouvé la réponse de façon claire .. ni pris le temps d&#8217;investiguer ou de faire des tests (honte à moi !!).</p>
<p>Sinon, pour compléter un oubli sur mon commentaire précédent, je reprends Collobian à propos du post : &#8220;Excellent, et salutaire.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Arnaud</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/#comment-825</link>
		<dc:creator>Arnaud</dc:creator>
		<pubDate>Sun, 20 Jul 2008 09:32:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-825</guid>
		<description>Bonjour DI, 

effectivement la série n'est pas terminée mais pour répondre à ta question, il faut considérer que sauf cas particulier (voir "index merge optimization" dans la doc / présence de "index_merge" dans la colonne "type" de EXPLAIN), MySQL n'utilise qu'un seul index à la fois. Donc soit celui-ci est multiple, auquel cas tu tombes dans le comportement évoqué plus haut avec le leftmost prefixing, soit tes index sont posés séparemment et dans ce cas (sauf index_merge encore une fois) MySQL, et plus précisemment l'optimiseur, va choisir l'index le plus efficace c'est à dire le plus restrictif, autrement dit celui qui permet d'éliminer le plus de tuples le plus rapidement possible.
On ne maîtrise pas vraiment les choix de l'optimiseur sauf à volontairement fournir des données dont on sait qu'elles vont le conduire à prendre telle ou telle décision, des commandes existent également pour le forcer à choisir un index en particulier et pas un autre, il est aussi possible de le contraindre à effectuer une jointure dans un ordre précis mais ces commandes sont à manier en connaissance de cause, elles seront évoquées dans un prochain billet.</description>
		<content:encoded><![CDATA[<p>Bonjour DI, </p>
<p>effectivement la série n&#8217;est pas terminée mais pour répondre à ta question, il faut considérer que sauf cas particulier (voir &#8220;index merge optimization&#8221; dans la doc / présence de &#8220;index_merge&#8221; dans la colonne &#8220;type&#8221; de EXPLAIN), MySQL n&#8217;utilise qu&#8217;un seul index à la fois. Donc soit celui-ci est multiple, auquel cas tu tombes dans le comportement évoqué plus haut avec le leftmost prefixing, soit tes index sont posés séparemment et dans ce cas (sauf index_merge encore une fois) MySQL, et plus précisemment l&#8217;optimiseur, va choisir l&#8217;index le plus efficace c&#8217;est à dire le plus restrictif, autrement dit celui qui permet d&#8217;éliminer le plus de tuples le plus rapidement possible.<br />
On ne maîtrise pas vraiment les choix de l&#8217;optimiseur sauf à volontairement fournir des données dont on sait qu&#8217;elles vont le conduire à prendre telle ou telle décision, des commandes existent également pour le forcer à choisir un index en particulier et pas un autre, il est aussi possible de le contraindre à effectuer une jointure dans un ordre précis mais ces commandes sont à manier en connaissance de cause, elles seront évoquées dans un prochain billet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: DI</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/#comment-824</link>
		<dc:creator>DI</dc:creator>
		<pubDate>Sat, 19 Jul 2008 08:52:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-824</guid>
		<description>Une question peut-être déjà prévue pour le prochain article et relative à :

"Les champs concernés par une clause WHERE, ORDER BY, GROUP BY, MIN(), MAX(), 
ainsi que les champs qui permettent de relier des tables entre elles"

Si un requête contient plusieurs clauses, chacune ayant un index. Quels seront les index utilisés ? Tous ? Dans que ordre seront-ils utilisés ? Par rapport à la clause ou par rapport à l'efficacité de l'index ?</description>
		<content:encoded><![CDATA[<p>Une question peut-être déjà prévue pour le prochain article et relative à :</p>
<p>&#8220;Les champs concernés par une clause WHERE, ORDER BY, GROUP BY, MIN(), MAX(),<br />
ainsi que les champs qui permettent de relier des tables entre elles&#8221;</p>
<p>Si un requête contient plusieurs clauses, chacune ayant un index. Quels seront les index utilisés ? Tous ? Dans que ordre seront-ils utilisés ? Par rapport à la clause ou par rapport à l&#8217;efficacité de l&#8217;index ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pensez vous tout savoir sur les index mysql ? &#124; itanea, le blog</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/#comment-47</link>
		<dc:creator>Pensez vous tout savoir sur les index mysql ? &#124; itanea, le blog</dc:creator>
		<pubDate>Tue, 01 Jul 2008 12:39:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-47</guid>
		<description>[...] : Les index MySQL : types, placements, efficacité   yoo_permalink = [...]</description>
		<content:encoded><![CDATA[<p>[...] : Les index MySQL : types, placements, efficacité   yoo_permalink = [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mat</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/#comment-45</link>
		<dc:creator>Mat</dc:creator>
		<pubDate>Mon, 30 Jun 2008 09:13:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-45</guid>
		<description>Merci beaucoup pour cet article :)</description>
		<content:encoded><![CDATA[<p>Merci beaucoup pour cet article <img src='http://www.dbnewz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: [MySQL] Tout sur les index &#124; GnuLink eXtime</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/#comment-43</link>
		<dc:creator>[MySQL] Tout sur les index &#124; GnuLink eXtime</dc:creator>
		<pubDate>Sat, 28 Jun 2008 09:50:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-43</guid>
		<description>[...] Articles [...]</description>
		<content:encoded><![CDATA[<p>[...] Articles [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: arnaud</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/#comment-42</link>
		<dc:creator>arnaud</dc:creator>
		<pubDate>Fri, 27 Jun 2008 17:53:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-42</guid>
		<description>Merci cobolian,

En ce qui concerne ton tips, a.id = b.id ou b.id = a.id, l'optimiseur va résoudre cette jointure selon ses calculs, il ne va donc pas forcément faire intervenir les tables selon l'ordre dans lequel elles ont été écrites (l'ordre finalement retenu est indiqué dans le EXPLAIN), je pense donc que sur ce point tu évoques sans doute le query cache ? Dans ce cas oui effectivement, si a.id = b.id est déjà dans le cache, autant en profiter et ne pas demander la même chose mais exprimé différemment.

A propos du second point, le cas où il y'a "plusieurs tests", je pense que l'on parle ici du leftmost prefixing ? Si c'est bien cela, l'ordre importe effectivement.</description>
		<content:encoded><![CDATA[<p>Merci cobolian,</p>
<p>En ce qui concerne ton tips, a.id = b.id ou b.id = a.id, l&#8217;optimiseur va résoudre cette jointure selon ses calculs, il ne va donc pas forcément faire intervenir les tables selon l&#8217;ordre dans lequel elles ont été écrites (l&#8217;ordre finalement retenu est indiqué dans le EXPLAIN), je pense donc que sur ce point tu évoques sans doute le query cache ? Dans ce cas oui effectivement, si a.id = b.id est déjà dans le cache, autant en profiter et ne pas demander la même chose mais exprimé différemment.</p>
<p>A propos du second point, le cas où il y&#8217;a &#8220;plusieurs tests&#8221;, je pense que l&#8217;on parle ici du leftmost prefixing ? Si c&#8217;est bien cela, l&#8217;ordre importe effectivement.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cobolian</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/#comment-41</link>
		<dc:creator>cobolian</dc:creator>
		<pubDate>Fri, 27 Jun 2008 15:51:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-41</guid>
		<description>Excellent, et salutaire. Toute personne utilisant mysql (ou autre, parceque les concepts sont les memes) devrait être capable de réciter ce post par coeur sous peine de chatiments :)

Petit tips : dans les requetes, il faut eviter de faire une fois un 'where a.id = b.id' puis dans une autre requete 'where b.id = a.id', l'ordre influe sur les perfs. Pareil s'il y a plusieurs tests, il faut les mettre dans le meme ordre (celui de l'index en fait).</description>
		<content:encoded><![CDATA[<p>Excellent, et salutaire. Toute personne utilisant mysql (ou autre, parceque les concepts sont les memes) devrait être capable de réciter ce post par coeur sous peine de chatiments <img src='http://www.dbnewz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Petit tips : dans les requetes, il faut eviter de faire une fois un &#8216;where a.id = b.id&#8217; puis dans une autre requete &#8216;where b.id = a.id&#8217;, l&#8217;ordre influe sur les perfs. Pareil s&#8217;il y a plusieurs tests, il faut les mettre dans le meme ordre (celui de l&#8217;index en fait).</p>
]]></content:encoded>
	</item>
</channel>
</rss>
