> Tous les forumsForum des Webmasters

 sql (clos)
Statut du sujet : NON RESOLU Imprimer
 ti_ouf
  Posté le 22/10/2004 @ 13:37  
 Astucien


4770 Messages
bonjour tout le monde; Je me pose une question toute bête sur le langage sql,et je n'arrive pas a trouver. Quelle est la difference entre "PRIMARY KEY('id')" et "INDEX('id')"???? je ne trouve pas quelque chose qui expliquerait simplement avec des exemples,tout se que j'ai trouvé reste compliqué et assez vague je trouve,rien de concret!!! Si vous pouvez m'eclairer...
 Afficher le profil de ti_ouf Envoyer un message privé à ti_ouf
 
 
Publicité
 maciewboy  Posté le 22/10/2004 à 18:15  
Petit astucien

111 Messages
salut ti-ouf. Yé crois que le clef primaire est celle qui permet de reconnaitre ton entité sans aucun doute (généralement un chiffre auto-incrémenté) et que l'index permet de faire le lien avec une autre clef primaire d'une autre table. Mais j'en suis vraiment pas sur. Pour suivre...
Afficher le profil de maciewboyEnvoyer un message privé à maciewboy
 Revenir en haut de la page
 ti_ouf  Posté le 22/10/2004 à 18:49  
Astucien


4770 Messages
salut Alors moi se que j'ai pu comprendre,mais ça reste trop vague et je ne suis surtout pas sur d'avoir bien compris lol [tropbu]. La clé primaire, c'est ce qui permettra d'identifier de manière unique un enregistrement complet,le code doit etre assez court comme par exemple des chiffres(ce qui corresponderait bien au id). L'INDEX ou plutot UNIQUE INDEX aurra le même effet mais par contre il sera orienté sur des code plus long. La norme serait d'utiliser PRIMARY KEY pour les cles identifiante (id) et le reste avec UNIQUE INDEX. Mais bon si d'autres peuvent orienter un peu mieux.
Afficher le profil de ti_ouf Voir la configuration de ti_oufEnvoyer un message privé à ti_ouf
  Revenir en haut de la page
 koala01  Posté le 23/10/2004 à 00:08  
Astucien

4715 Messages
Salut, A vrai dire, la clé primaire est, comme les deux l'ont dit, ce qui permet d'identifier un enregistrement de la table de manière unique (au passage, ce ne doit pas etre ni forcément court, ni forcément numérique, car on peut aussi créer une clé primaire sur plusieurs champs de la table...simplement PHPMyAdmin n'en donne pas la possiblité[clindoeil]) L'index, quant à lui permet d'accélérer la recherche d'un(e partie de )champs, un peu à la manière d'une table des matières qui pourrait etre classée par ordre alphabétique, selon la page à laquelle apparait le terme, ou selon la date de sa première apparition dans la langue francaise (et on peut évidemment trouver d'aute manière de classer les choses) Il est à noter que, pour qu'une base de données sur laquelle s'effectuent de nombreuses mises à jour(dans le jargon, on parle de base de données OLTP "On Line Transaction process")soit concidérée comme "cohérente", il faut essayer d'éviter autant que possible la "redondance des données" (comprenez: qu'une information ne se trouve qu'en un et un seul endroit, de manière à en faciliter la mise à jour éventuelle), ce qui implique l'utilisation d'aussi peu d'index que possible. Par contre, dans le cas d'une base de donnée sur lesquelles il y aurait peut de mises à jour, mais dont les données sont triturées dans tous les sens à fin d'analyse (on parle alors de base de données OLTP "On Line Analysis Process"), on créera justement un maximum d'index et on envisagera meme parfois de créer une redondance des données, de manière à ce que l'information adéquate soit trouvée et puisse etre mise en relation avec d'autres informations aussi rapidement que possible Si, effectivement, on peut dire que la clé primaire est un index (car elle est effectivement indexée) il faut vraiment éviter de considérer un index comme étant la clé primaire, car ce n'est absolument pas vrai. En gros, on pourrait résumer les choses ainsi: Une clé primaire est plutot obligatoire, et surtout si vous envisager qu'une autre table soit mise en relation avec votre première table, car la clé primaire (ou un de ses composant dans le cas d'une clé primaire multicomposants) de l'une sera utilisée comme clé "étrangère" dans une autre table Un index n'est pas absolument nécessaire car il permet juste de retrouver éventuellement un peu plus vite (et, pour voir un différence significative, il ne faut pas essayer avec 5 ou 10.000 enregistrements, mais plutot avec 100 ou 200.000 ... si pas plus) mais ca pose alors le problème de devoir recréer l'index à chaque ajout ou mise à jour d'enregistrement, ce qui demande pas mal de ressources et qui prend pas mal de temps, sous peine que l'index ne soit plus synchronisé avec le contenu réel de la BDD... Il est donc très important de se poser la question de savoir si ta BDD subira souvent des mises à jour (insertion, mise à jour ou suppression de données) ou non de manière à juger de l'utilité de la création d'un index [clindoeil]
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 ti_ouf  Posté le 23/10/2004 à 08:59  
Astucien


4770 Messages
Salut Koala merci pour tes explications qui comme toujours sont exellentes!!! Je me pose cette question car j'ai pu voir ces differentes utilistaions sans en comprendre le sens. Ainsi par exemple pour une new letters j'ia pu voir qu'on utilisait INDEX(vu sur 3 sites differents),et que Primary KEY etait dans l'exemple de presentation du langage sql. Alors je en savais pas sur quel pied jongler... ALors pour mon cas c'est tout con,je veux juste essayer de me faire une table afin de mettre des stat via formulaire,donc eux a priori il n'y aurrait pas de modif mais juste des insert. Je devrait donc opter pour INDEX non INDEX('id')... Si au pire on se trompe,PRIMARY KEY est le moyen sur pour ne pas avoir d'erreur??? Merci beaucoup
Afficher le profil de ti_ouf Voir la configuration de ti_oufEnvoyer un message privé à ti_ouf
  Revenir en haut de la page
 koala01  Posté le 23/10/2004 à 14:45  
Astucien

4715 Messages
Dans le cadre d'un newsletter, on peut indexer le contenu, de manière à accélerer la recherche, du fait que tu modifieras rarement le contenu d'une lettre déjà envoyée,mais l'index doit alors être remis à jour à chaque nouvelle lettre (et puis, comme je l'ai indiqué, le gain de performance n'est visible qu'une fois que l'on atteint de nombreux enregistrements) Dans le cadre d'un sondage, tu peux commencer par ne pas créer d'index, du fait que tu ne sais pas à quelle vitesse elles arriveront (mais il faut une clé primaire pour enregistrer les réponses)... Par contre, une fois un sondage clôturé, tu peux envisager d'indexer les résultats (dans une aute table) de manière à accélérer l'acces aux stats qu'il a permis de mettre en avant.
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 ti_ouf  Posté le 23/10/2004 à 15:45  
Astucien


4770 Messages
d'accord je comprends mieux merci beaucoup
Afficher le profil de ti_ouf Voir la configuration de ti_oufEnvoyer un message privé à ti_ouf
  Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsForum des Webmasters

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page