Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1554 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Mysql] Les indexs, ça sert à quoi ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Mysql] Les indexs, ça sert à quoi ?

n°604463
kaiska
Posté le 07-01-2004 à 09:27:43  profilanswer
 

Bonjour,
Vous parlez trés souvent d'"index" sur les tables mysql dans le forum. Ca serait sympa si quelqu'un pouvait m'expliquer rapidement de quoi il s'agit. J'avoue avoir du mal à saisir.
 
Merci d'avance :)

mood
Publicité
Posté le 07-01-2004 à 09:27:43  profilanswer
 

n°604490
LToPiQ[PPC​]
Boolay de formation
Posté le 07-01-2004 à 09:58:50  profilanswer
 

Faut que tu cherches dans Google parce qu'un index ça s'explique difficilement en un post.
 
Grosso modo ça permet de faire des recherches plus vite en permettant à mysql de se créer une "table des matières" des réponses. Comme l'index dans les livres, c'est exactement le même principe... Mysql regarde dans l'index, il trouve rapidement le terme qu'il cherche et à partir de là il va le trouver très rapidement, bien plus rapidement que s'il devait chercher le terme dans les 5000 pages de son bouquin.
 
Après y a des index clustered / non clustered (encore que je crois que mysql ne gère pas la différence), y a des index par défaut sur les primary... Il y a aussi des inconvénients (l'index doit être mis à jour en cas d'update/insert donc faut les utiliser surtout dans les select), faut les mettre sur les bonnes colonnes, etc, etc...

n°604684
kaiska
Posté le 07-01-2004 à 13:12:26  profilanswer
 

Nan vraiment ca me dépasse je comprend pas trop. C'est quoi l'avantage par rapport à une colonne d'id par exemple ?

n°604752
drasche
Posté le 07-01-2004 à 14:22:52  profilanswer
 

Attention: le but de l'index n'est pas de remplacer une colonne d'id. un index est là soit pour éventuellement ajouter une contrainte d'intégrité (ne pas avoir 2x le même id pour une clé primaire par exemple), soit pour accélérer les accès.  Un index bien placé peut diminuer très sensiblement le temps d'exécution d'une requête (le moteur BDD ira consulter l'index plutôt que la table si une condition porte sur le champ indexé).
 
Attention de ne pas y aller bourrin: un index prend plus de place que les données du champ qui est indexé!  Il faut donc indexer uniquement les champs critiques, et quand cela est vraiment nécessaire. Si pas de gain, pas besoin d'index.


Message édité par drasche le 07-01-2004 à 14:23:15

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°605253
kaiska
Posté le 07-01-2004 à 23:17:28  profilanswer
 

Hum, d'accord mais dans ce cas quel genre de champs indexer ? Par exemple le résumé d'un livre qui fait généralement plus de 500 caractére ? ou ca dépend pas de la taille mais du champs sur lequel est éfféctué la requete ?

n°605263
mrbebert
Posté le 07-01-2004 à 23:26:48  profilanswer
 

Un index permet avant tout d'accélérer les recherches.
L'idée, c'est d'isoler une (ou plusieurs) colonnes pour faire les recherches sur un volume d'information plus faible que la table entière.
 
Si tu as une table avec 10 colonne et que l'une d'entre elle est indexée, cette colonne sera recopiée à part (comme si c'était une autre table avec 1 seule colonne).
Lors d'une recherche s'appliquant sur cette colonne  (... WHERE colonne = 123), le SGBD va parcourir d'abord cet index pour évaluer la condition. Ainsi, il saura "rapidement" quelles lignes sont concernées sans avoir besoin de lire toute la table.
Bien sur, il devra ensuite accéder à la table pour récupérer toutes les infos de ces lignes, mais il pourra lire seulement les lignes utiles, pas toute la table :)  
 
En simplifiant, disons qu'il faut indexer les colonnes pas trop grosses qui apparaissent dans les WHERE.
Du moins, les plus utilisées, faut pas non plus tout indexer :/


Message édité par mrbebert le 07-01-2004 à 23:27:21
n°605323
matafan
Posté le 08-01-2004 à 03:59:31  profilanswer
 

Et pour la petite histoire, les attributs clés sont automatiquement indexés.

n°605327
Tetedeienc​h
Head Of God
Posté le 08-01-2004 à 06:53:59  profilanswer
 

matafan a écrit :

Et pour la petite histoire, les attributs clés sont automatiquement indexés.


 
ca dépend quand même du SGBD :D

n°605345
nraynaud
lol
Posté le 08-01-2004 à 08:23:28  profilanswer
 

kaiska a écrit :

Bonjour,
Vous parlez trés souvent d'"index" sur les tables mysql dans le forum. Ca serait sympa si quelqu'un pouvait m'expliquer rapidement de quoi il s'agit. J'avoue avoir du mal à saisir.
 
Merci d'avance :)

http://forum.hardware.fr/hardwaref [...] tm#t604996


---------------
trainoo.com, c'est fini
n°605347
nraynaud
lol
Posté le 08-01-2004 à 08:24:50  profilanswer
 

Tetedeiench a écrit :

ca dépend quand même du SGBD :D

Disons même que dans les SGBD sérieux, c'est pas le cas, n'ayons pas peur.


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 08-01-2004 à 08:24:50  profilanswer
 

n°605725
kaiska
Posté le 08-01-2004 à 17:02:00  profilanswer
 

Merci beaucoup c'est plus clair maintenant :) Bon je vais indexer moi :)

n°606115
matafan
Posté le 09-01-2004 à 02:54:42  profilanswer
 

nraynaud : c'est quoi un SGBD sérieux ?

n°606145
nraynaud
lol
Posté le 09-01-2004 à 07:09:52  profilanswer
 

ça comprend pas MySQL, Access, tout ce qui repose sur MS Jet (donc excel etc.), les trucs qui dépassent à peine de gestionnaire de fiches et un bon paquet de merde en barril qu'on vend ou pire donne au gogo en lui faisant croire qu'avec ça c'est le maitre de la donnée pour zéro euro.
 
ça comprend essentiellement Oracle, DB2 et tout ce qui est à peu près compatible avec la norme SQL 92. Mais qui sourtout permet de placer ses données au frais dans une relative confiance.


---------------
trainoo.com, c'est fini
n°606200
xilebo
noone
Posté le 09-01-2004 à 10:02:26  profilanswer
 

bah en fait , a la difference d'une table, un index est chargé en mémoire , c est pour cela que la recherche est infiniment plus rapide. Et c est aussi pourquoi on ne peut pas indexer tous les champs : en plus de ralentir le traitement, ca reviendrait a charger toute la table en mémoire.

n°606203
nraynaud
lol
Posté le 09-01-2004 à 10:07:22  profilanswer
 

xilebo a écrit :

bah en fait , a la difference d'une table, un index est chargé en mémoire , c est pour cela que la recherche est infiniment plus rapide. Et c est aussi pourquoi on ne peut pas indexer tous les champs : en plus de ralentir le traitement, ca reviendrait a charger toute la table en mémoire.

c'est bien, je vois que tu as lu mon post explicatif sur les indexs.


---------------
trainoo.com, c'est fini
n°606356
Tetedeienc​h
Head Of God
Posté le 09-01-2004 à 13:03:13  profilanswer
 

oui, j'ai posté car je me souviens avoir vu PowerBuilder me générer un script de creation de BDD sous mySQL en créant des index sur la clé, et je me suis dit tiens, spa automatique sur MySQL /D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Mysql] Les indexs, ça sert à quoi ?

 

Sujets relatifs
[AVIS] Postgresql ou mysql?[PHP/Mysql] enregistrer tableau dans bdd
[PHP/Mysql] Lier deux formulaires ...Recherche indifférente à la case dans MySQL... [ - Job's Done - ]
[MYSQL] mysqldump reduit la taille de ma bdd ...mise a jour base distante avec EMS mysql?
Probleme de PHP/MYSQL => je m'embrouille dans l'algomysql_connect. Pb inexpliqué. Peut être une incompatibilité serveur.
Bleme mysqlRecherche aide co-webmaster pour site sur le rock (PHP/MYSQL)
Plus de sujets relatifs à : [Mysql] Les indexs, ça sert à quoi ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR