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

  FORUM HardWare.fr
  Programmation

  [MySQL] KEY qu'est-ce que c'est | Jointure ou petites requêtes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] KEY qu'est-ce que c'est | Jointure ou petites requêtes

n°104742
Dost67
Posté le 25-02-2002 à 21:29:49  profilanswer
 

Bon donc mes précédentes questions n'ont pas eu bcp de succès alors je recommence autrement.
 
1. Confirmez moi que 2 index dans un même base (mais pas la même table) ne peuvent pas avoir le même nom. C'est pour être sûr et ne pas être emmerdé après que je demande.
Si c'est bien le cas comment faire avec PRIMARY KEY (ligne) puisque l'on ne donne pas de nom à l'index ! Faut-il que le nom de la ligne alors soit unique ?
Et sinon comment utilise-t-on l'index d'une ligne dans un WHERE ? Par exemple si j'ai INDEX monindex (ligne) on fait WHERE monindex="1" ou WHERE ligne="1" ?
 
2. Dans la doc MySQL je vois PRIMARY KEY, INDEX ou UNIQUE. Déjà je voudrais savoir la différence entre PRIMARY KEY et UNIQUE. Ensuite dans PHPDig dans la description des tables il y a KEY : qu'est-ce que c'est ? Un autre type d'index ?
 
3. - SELECT id_tbl2 FROM tbl1 WHERE id_tbl1="1"
... traitement PHP : boucle FOR avec chaque $id_tbl2
   - SELECT montexte FROM tbl2 WHERE id_tbl="$id_tbl2"
 
ou SELECT montexte FROM tbl1, tbl2 WHERE tbl1.id_tbl1="1" AND tbl1.id_tbl2 = tbl2.id_tbl
 
Que choisir ? Laquelle des deux est la plus rapide. Je dirais la deuxième mais je demande confirmation.
 
Merci d'avance.

mood
Publicité
Posté le 25-02-2002 à 21:29:49  profilanswer
 

n°104754
Tentacle
Posté le 25-02-2002 à 22:02:31  profilanswer
 

Salut,
 
Déjà je te conseille cette URL sur MySQL :
http://www.mysql.com/doc/ (en anglais mais on peut rechercher une instruction)
http://dev.nexen.net/docs/mysql/chargement.html (en francais à télécharger)
 
Bon pour tes questions maintenant :
 
Comme tu peux le voir à cette url http://www.mysql.com/doc/C/R/CREATE_TABLE.html  
tu n'es pas obligé de nommé ton index (le fait que index_name soit entre crochet), tu peux par exemple tout simplement mettre 'INDEX (toto)' pour la colonne toto .
 
Pour PRIMARY KEY, tu n'as donc pas besoin de faire un INDEX ou un UNIQUE dessus, c'est les 2 ensembles :)
 
Pour les clause WHERE, tu ne t'occupes pas des INDEX, tu fais tout simplement 'WHERE toto=1' ou toto est encore le nom d'une colonne.
 
Pour la différence entre PRIMARY KEY et UNIQUE, en gros, PRIMARY KEY possède un INDEX et de plus on ne peut pas mettre de valeurs nulles dans une PRIMARY KEY.
PRIMARY KEY est surtout utilisé quand tu veux faire des liens entre des tables ( par exemple le login d'une table utilisateurs est en PRIMARY KEY parce que les autres tables , genre une table de messages, peuvent pointer vers cette colonne login) car la recherche d'une rangée spécifique en fonction de cette colonne est très optimisées. (oula 10 lignes pour expliquer ça... merde :D
 
Pour ta dernière question, effectivement je confirme, faire tout en MySQL sera BEAUCOUP plus rapide que de faire une partie en PHP, surtout que le PHP est tout de même quasi interprété :D
Essaie le plus souvent de faire le max du boulot dans une requête... ce sera toujours plus rapide :)
 
a+

n°104772
Dost67
Posté le 25-02-2002 à 23:04:41  profilanswer
 

OK c'est très clair pour la dernière réponse ;)
 
Par contre la première je me suis trompé, je demandais la différence entre un UNIQUE INDEX et un PRIMARY KEY... j'en déduis donc qu'un UNIQUE INDEX NOT NULL == PRIMARY KEY.
 
Sinon y'a le problème des noms d'index. A quoi cela sert-il de mettre un nom si après on ne s'en sert pas ?

n°104776
Dost67
Posté le 25-02-2002 à 23:10:56  profilanswer
 

J'ai trouvé : c'est le nom de l'index qui doit en fait être unique... c'est pour ça qu'il vaut mieux les nommer.
 
En fait il reste une question, est-ce que écrire dans la définition de la table :
UNIQUE champs1 CHAR(10) NOT NULL
== UNIQUE INDEX champs 1 CHAR(10) NOT NULL
Et si c'est différent, pourquoi ?

n°104838
Tentacle
Posté le 26-02-2002 à 09:30:07  profilanswer
 

Dost67 a écrit a écrit :

J'ai trouvé : c'est le nom de l'index qui doit en fait être unique... c'est pour ça qu'il vaut mieux les nommer.
 
En fait il reste une question, est-ce que écrire dans la définition de la table :
UNIQUE champs1 CHAR(10) NOT NULL
== UNIQUE INDEX champs 1 CHAR(10) NOT NULL
Et si c'est différent, pourquoi ?  




 
Pour le nom des INDEX, ne t'emmerde pas pour ça, tu n'en as pas besoin, c'est automatique le nom, ne le nomme pas c'est tout :)
 
Heu aussi tu ne pas faire suivre UNIQUE, ou INDEX de la définition d'une colonne... Tu déclares d'abord ta colonnes, et ensuite tu mets un UNIQUE et/ou INDEX dessus.
Sinon pour la différence, sache que avec UNIQUE, il ne crée pas d'INDEX, donc si tu utilises ce champ pour des jointures, ce ne sera pas aussi rapide qu'avec un INDEX.
Mais attention! n'utilises pas un INDEX partout... parce que ça ralentit l'insertion d'une ligne... m'enfin ça c'est si tu as des grosses grosses tables avec beaucoup d'insertion :)


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

  [MySQL] KEY qu'est-ce que c'est | Jointure ou petites requêtes

 

Sujets relatifs
PHP/ MYSQL : generation d'alias, clause unique[MySQL] - prob de max_user_connexions
[SQL] probleme de requetes[MySQL] Plusieurs questions
Meler 2 requetes...[MySQL] Requête impossible ?
[SQL] Recevoir toutes les correspondances d'une jointureA tout ceux qui ont fait un forum en PHP/MySQL
Creation de base Mysql automatisee ? 
Plus de sujets relatifs à : [MySQL] KEY qu'est-ce que c'est | Jointure ou petites requêtes


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