<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Commentaires sur : 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>
	<lastBuildDate>Tue, 31 Jan 2012 16:20:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Par : InAme</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/comment-page-1/#comment-1282</link>
		<dc:creator>InAme</dc:creator>
		<pubDate>Fri, 04 Jun 2010 13:22:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-1282</guid>
		<description>Merci beaucoup pour ces précisions.

Je suis content d&#039;avoir trouvé ce site qui met en avant certain points obscures pour moi sur Mysql.

Jusque là je ne m&#039;étais jamais trop soucié de l&#039;optimisation. Mes études m&#039;ont appris beaucoup de choses sur les bases de données mais ce n&#039;était jamais poussé sur l&#039;optimisation. 
J&#039;ai toujours travaillé sur des tables petites (des milliers d&#039;enregistrements) Mais là je suis dans un cas ou j&#039;utilise des tables contenant des données par millions... Et là une requête que l&#039;on utilise depuis toujours, on se rend compte qu&#039;elle est trop gourmande en ressource et juste en la reformulant différemment on gagne énormément.

Mais là où j&#039;ai le plus gagné, c&#039;est vraiment sur l&#039;utilisation des index. C&#039;est impressionnant. 

Je vais tester tes indications.  Mais j&#039;ai déjà appris pas mal par le biais de ce site, merci.</description>
		<content:encoded><![CDATA[<p>Merci beaucoup pour ces précisions.</p>
<p>Je suis content d&#8217;avoir trouvé ce site qui met en avant certain points obscures pour moi sur Mysql.</p>
<p>Jusque là je ne m&#8217;étais jamais trop soucié de l&#8217;optimisation. Mes études m&#8217;ont appris beaucoup de choses sur les bases de données mais ce n&#8217;était jamais poussé sur l&#8217;optimisation.<br />
J&#8217;ai toujours travaillé sur des tables petites (des milliers d&#8217;enregistrements) Mais là je suis dans un cas ou j&#8217;utilise des tables contenant des données par millions&#8230; Et là une requête que l&#8217;on utilise depuis toujours, on se rend compte qu&#8217;elle est trop gourmande en ressource et juste en la reformulant différemment on gagne énormément.</p>
<p>Mais là où j&#8217;ai le plus gagné, c&#8217;est vraiment sur l&#8217;utilisation des index. C&#8217;est impressionnant. </p>
<p>Je vais tester tes indications.  Mais j&#8217;ai déjà appris pas mal par le biais de ce site, merci.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Arnaud</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/comment-page-1/#comment-1279</link>
		<dc:creator>Arnaud</dc:creator>
		<pubDate>Wed, 02 Jun 2010 08:23:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-1279</guid>
		<description>Bonjour InAme,

Concernant ma remarque il faut bien noter que lorsque je dis l&#039;ordre il s&#039;agit ici d&#039;un index composé à 3 champs et que seul le 1er et le 3eme champs sont utilisés dans mon exemple, empêchant MySQL de tirer parti de l&#039;index composé pour le 3eme champ.

A propos de ta requête je te conseille d&#039;executer un SHOW INDEX FROM... afin d&#039;observer les cardinalités.

Au cas où celles-ci soient nulles, et si ta table est de taille moyenne ou InnoDB (qui fonctionne par &quot;plongées&quot; statistiques aléatoires pour sortir une approximation : moins fiable mais bcp plus rapide que MyISAM -&gt; tres long sur grosse table), tu peux tenter un ANALYZE TABLE ... pour maj ces statistiques.

MySQL a peut-être une bonne raison de se dire que c&#039;est le tri sur idaction qui est le plus déterminant, auquel cas mysql préfère utiliser l&#039;index le plus petit en taille (key_len dans le EXPLAIN) ou le plus rapide à parcourir.

Tu peux aussi simuler l&#039;absence de cet index à part posé sur idaction et observer ce que ca donne :
EXPLAIN SELECT ... FROM ... ignore index (idx_idaction) WHERE...

Tu verras ainsi si sans cet index à part MySQL utilise bien ton index composé.</description>
		<content:encoded><![CDATA[<p>Bonjour InAme,</p>
<p>Concernant ma remarque il faut bien noter que lorsque je dis l&#8217;ordre il s&#8217;agit ici d&#8217;un index composé à 3 champs et que seul le 1er et le 3eme champs sont utilisés dans mon exemple, empêchant MySQL de tirer parti de l&#8217;index composé pour le 3eme champ.</p>
<p>A propos de ta requête je te conseille d&#8217;executer un SHOW INDEX FROM&#8230; afin d&#8217;observer les cardinalités.</p>
<p>Au cas où celles-ci soient nulles, et si ta table est de taille moyenne ou InnoDB (qui fonctionne par &laquo;&nbsp;plongées&nbsp;&raquo; statistiques aléatoires pour sortir une approximation : moins fiable mais bcp plus rapide que MyISAM -&gt; tres long sur grosse table), tu peux tenter un ANALYZE TABLE &#8230; pour maj ces statistiques.</p>
<p>MySQL a peut-être une bonne raison de se dire que c&#8217;est le tri sur idaction qui est le plus déterminant, auquel cas mysql préfère utiliser l&#8217;index le plus petit en taille (key_len dans le EXPLAIN) ou le plus rapide à parcourir.</p>
<p>Tu peux aussi simuler l&#8217;absence de cet index à part posé sur idaction et observer ce que ca donne :<br />
EXPLAIN SELECT &#8230; FROM &#8230; ignore index (idx_idaction) WHERE&#8230;</p>
<p>Tu verras ainsi si sans cet index à part MySQL utilise bien ton index composé.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : InAme</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/comment-page-1/#comment-1275</link>
		<dc:creator>InAme</dc:creator>
		<pubDate>Mon, 31 May 2010 14:46:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-1275</guid>
		<description>Article très intéressant!

J&#039;ai enfin trouvé des réponses sur les index! J&#039;y vois plus clair maintenant, merci.

Mais j&#039;ai une question, il est dit dans l&#039;article:

&quot;En revanche, si l’ordre de vos champs ne respecte pas l’ordre de séquence de votre index, comme ici :

SELECT ... FROM City WHERE Name = ... AND Population = ..

Cette requête ne bénéficiera pas complètement de l’index multiple précedemment crée, cela dit l’optimiseur tirera sûrement parti de cet index pour la colonne Name, mais pas pour le second critère de recherche.&quot;

Or j&#039;ai une requête qui a pour condition: 
SELECT ... FROM .. WHERE idsite =2 AND date = &#039;2010-01-03&#039; GROUP BY action

j&#039;ai donc créé un index sur: idsite, date, action (dans cet ordre)
seulement j&#039;ai un autre index sur action tout seul.

Et pour cette requette c&#039;est l&#039;index sur idaction qui est choisi alors que dans ma requête il est en 3eme posistion! Pourquoi n&#039;est ce pas l&#039;index qui commence par idsite qui a été choisi?</description>
		<content:encoded><![CDATA[<p>Article très intéressant!</p>
<p>J&#8217;ai enfin trouvé des réponses sur les index! J&#8217;y vois plus clair maintenant, merci.</p>
<p>Mais j&#8217;ai une question, il est dit dans l&#8217;article:</p>
<p>&laquo;&nbsp;En revanche, si l’ordre de vos champs ne respecte pas l’ordre de séquence de votre index, comme ici :</p>
<p>SELECT &#8230; FROM City WHERE Name = &#8230; AND Population = ..</p>
<p>Cette requête ne bénéficiera pas complètement de l’index multiple précedemment crée, cela dit l’optimiseur tirera sûrement parti de cet index pour la colonne Name, mais pas pour le second critère de recherche.&nbsp;&raquo;</p>
<p>Or j&#8217;ai une requête qui a pour condition:<br />
SELECT &#8230; FROM .. WHERE idsite =2 AND date = &#8216;2010-01-03&#8242; GROUP BY action</p>
<p>j&#8217;ai donc créé un index sur: idsite, date, action (dans cet ordre)<br />
seulement j&#8217;ai un autre index sur action tout seul.</p>
<p>Et pour cette requette c&#8217;est l&#8217;index sur idaction qui est choisi alors que dans ma requête il est en 3eme posistion! Pourquoi n&#8217;est ce pas l&#8217;index qui commence par idsite qui a été choisi?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : antonin</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/comment-page-1/#comment-1066</link>
		<dc:creator>antonin</dc:creator>
		<pubDate>Tue, 20 Oct 2009 12:31:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-1066</guid>
		<description>j&#039;en ai rêvez, dbnews l&#039;a écrit :)
Cela faisait un moment que je cherchais à savoir s&#039;il fallait faire un index par clause where ou si un index de plusieurs colonnes pouvait profiter à d&#039;autres requêtes en contenant moins, me reste plus qu&#039;à appliquer tous ces bon conseils.

Merci pour ce post bien écrit, compréhensible et très instructif, ça change du site de mysql qui explique tout sans rien expliquer  :)</description>
		<content:encoded><![CDATA[<p>j&#8217;en ai rêvez, dbnews l&#8217;a écrit <img src='http://www.dbnewz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Cela faisait un moment que je cherchais à savoir s&#8217;il fallait faire un index par clause where ou si un index de plusieurs colonnes pouvait profiter à d&#8217;autres requêtes en contenant moins, me reste plus qu&#8217;à appliquer tous ces bon conseils.</p>
<p>Merci pour ce post bien écrit, compréhensible et très instructif, ça change du site de mysql qui explique tout sans rien expliquer  <img src='http://www.dbnewz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : arnaud</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/comment-page-1/#comment-1059</link>
		<dc:creator>arnaud</dc:creator>
		<pubDate>Wed, 16 Sep 2009 15:02:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-1059</guid>
		<description>Corrigé, merci ;)</description>
		<content:encoded><![CDATA[<p>Corrigé, merci <img src='http://www.dbnewz.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : baptiste</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/comment-page-1/#comment-1057</link>
		<dc:creator>baptiste</dc:creator>
		<pubDate>Wed, 02 Sep 2009 08:54:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-1057</guid>
		<description>&quot;deux tables de 10 000 lignes chacune forment un produit cartésien de 100 000 lignes environ à étudier…&quot;

Le produit cartésien &#039;brute&#039; de deux tables de 10,000 lignes donne une table de 100,000,000 lignes ;)</description>
		<content:encoded><![CDATA[<p>&laquo;&nbsp;deux tables de 10 000 lignes chacune forment un produit cartésien de 100 000 lignes environ à étudier…&nbsp;&raquo;</p>
<p>Le produit cartésien &#8216;brute&#8217; de deux tables de 10,000 lignes donne une table de 100,000,000 lignes <img src='http://www.dbnewz.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : GnuLink &#187; MySQL - Tout sur les index</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/comment-page-1/#comment-968</link>
		<dc:creator>GnuLink &#187; MySQL - Tout sur les index</dc:creator>
		<pubDate>Wed, 14 Jan 2009 15:35:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbnewz.com/?p=48#comment-968</guid>
		<description>[...] Articles Tags:MySQL &#124; tutorials [...]</description>
		<content:encoded><![CDATA[<p>[...] Articles Tags:MySQL | tutorials [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : ooten</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/comment-page-1/#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&#039;ai un peu parcouru le blog, j&#039;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>Par : 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-page-1/#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&#039;index disponibles, ce billet précédent est tout indiqué.Appliquons notre requête à notre jeu d&#8217;essai :mysql&gt; 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>Par : DI</title>
		<link>http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/comment-page-1/#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&#039;est une question que je me posais depuis longtemps et, même si Google est mon ami, j&#039;ai jamais trouvé la réponse de façon claire .. ni pris le temps d&#039;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 : &quot;Excellent, et salutaire.&quot;</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 : &laquo;&nbsp;Excellent, et salutaire.&nbsp;&raquo;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

