|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
thierry8 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté le : Jeu Déc 15, 2005 15:54 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
Bonjour,
j'ai une table de jointure, qui est donc composé de deux clés étrangères.
Elle ne contient donc aucun index, et je souhaiterai savoir si dans mysql il est possible de lui indiquer qu'il s'agit d'une table de jointure ?
Merci
Dernière édition par thierry8 le Ven Déc 16, 2005 22:46; édité 2 fois |
|
| |
|
 |
spidetra WRInaute accro

Inscrit le: 07 Juil 2003 Messages: 1499 Localisation: Toulouse
|
Posté le : Jeu Déc 15, 2005 16:15 Sujet du message: Re: Mysql, une table de jointure... |
|
|
| thierry8 a écrit: |
Bonjour,
j'ai une table de jointure, qui est donc composé de deux clés étrangères.
Elle ne contient donc aucun index, et je souhaiterai savoir si dans mysql il est possible de lui indiquer qu'il s'agit d'une table de jointure ?
Merci |
Pourquoi elle ne contient aucun index ?
au contraire tu as tout intérêt à indexer ces 2 champs pour optimiser tes requêtes SQL.
Les contraintes de clés étrangères existent dans MySQl 5 ( et peut-être dans MySQl 4, à faire confirmer ). |
|
| |
|
 |
thierry8 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté le : Jeu Déc 15, 2005 16:21 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
| mais je ne peux indexer deux id de ma table (id_table1 liée à id_table2), car avec un index cela signifie que l'id est unique or ce n'est pas le cas je peux retrouver plusieurs fois un id ! |
|
| |
|
 |
spidetra WRInaute accro

Inscrit le: 07 Juil 2003 Messages: 1499 Localisation: Toulouse
|
Posté le : Jeu Déc 15, 2005 16:30 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
| Code: |
ALTER TABLE `table_jointure` ADD INDEX `FK_table1` ( `IDTable1` );
ALTER TABLE `table_jointure` ADD INDEX `FK_table2` ( `IDTable2` );
|
ne pas confondre index et clé primaire.
et si ta version de mysql supporte les contraintes de clé étrangères :
| Code: |
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
|
|
|
| |
|
 |
chantra WRInaute impliqué

Inscrit le: 27 Juin 2005 Messages: 257
|
Posté le : Jeu Déc 15, 2005 16:30 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
tu as qu'à indexer le couple d'ids comme unique.
table A: id,pif,paf
tableB :id,pof,pum
tableJonction idA,idB (unique)
idA1,idB (unique)
.
.
. |
|
| |
|
 |
spidetra WRInaute accro

Inscrit le: 07 Juil 2003 Messages: 1499 Localisation: Toulouse
|
Posté le : Jeu Déc 15, 2005 16:37 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
| chantra a écrit: |
tu as qu'à indexer le couple d'ids comme unique.
. |
Exact j'avais oublié l'index unique sur le couple id1, id2. |
|
| |
|
 |
thierry8 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté le : Jeu Déc 15, 2005 16:46 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
| humm...comment faire avec phpmyadmin ? |
|
| |
|
 |
spidetra WRInaute accro

Inscrit le: 07 Juil 2003 Messages: 1499 Localisation: Toulouse
|
Posté le : Jeu Déc 15, 2005 16:52 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
| thierry8 a écrit: |
| humm...comment faire avec phpmyadmin ? |
tu clique sur la structure de ta table :
- liste des clés et index présents
Créer une clef sur n colonne(s) -> Exécuter
- renseigner le formulaire.
sinon tu peux aussi essayer ça directement en sql :
| Code: |
ALTER TABLE `table_jointure` ADD INDEX `FK_table1` ( `IDTable1` );
ALTER TABLE `table_jointure` ADD INDEX `FK_table2` ( `IDTable2` );
ALTER TABLE `table_jointure` ADD UNIQUE `PK_ID1_ID2` ( `IDTable1` , `IDTable2` );
|
oerso, je suis partisant de la mise en place des trois index :
- les update et les delete seront un peu moins performant
- tu gagneras bc sur les select.
Dernière édition par spidetra le Jeu Déc 15, 2005 16:56; édité 1 fois |
|
| |
|
 |
chantra WRInaute impliqué

Inscrit le: 27 Juin 2005 Messages: 257
|
Posté le : Jeu Déc 15, 2005 16:56 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
si jamais tu peux te connecter directement sur ta bss, tu peux tester mysql control center.
Cette interface est bien faite et puissante. |
|
| |
|
 |
thierry8 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté le : Jeu Déc 15, 2005 16:56 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
ah ok !!!!
Impeccable !
Je te remercie beaucoup !  |
|
| |
|
 |
thierry8 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté le : Jeu Déc 15, 2005 16:58 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
une question encore le champ taille sert à quoi ?
et pourquoi en unique et pas index finallement sur les deux id ? |
|
| |
|
 |
chantra WRInaute impliqué

Inscrit le: 27 Juin 2005 Messages: 257
|
Posté le : Jeu Déc 15, 2005 17:01 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
pour la taille, cela de permet d'ajuster la memoire alloue pour une variable.
En unique sur les 2 clefs, cela te certifie que tu n'auras pas 2 fois le meme couple idA,idB.
le fait d'etre unique indexe par la meme occasion il me semble. |
|
| |
|
 |
thierry8 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté le : Jeu Déc 15, 2005 17:05 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
euh...si je ne me trompe pas c'est l'inverse, le fait d'être indexé, la clé est unique...
En revanche dans mon cas, même les deux id ne peuvent être unique!
Je peux très bien avoir deux fois cela:
id1 = 1
id2 = 1 |
|
| |
|
 |
chantra WRInaute impliqué

Inscrit le: 27 Juin 2005 Messages: 257
|
Posté le : Jeu Déc 15, 2005 17:20 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
le pb n'est pas d'avoir id1=1,id2=1
mais d'avoir id1=1,id2=1
et
id1=1,id2=1
c'est le couple id1,id2 qui doit etre unique.
ps: indexe ne force pas l'unicité...à mon avis, voir la doc de mysql pour plus de renseignement |
|
| |
|
 |
thierry8 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté le : Jeu Déc 15, 2005 17:23 Sujet du message: Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ] |
|
|
et oui je suis dans ce cas !
id1=1,id2=1 ET id1=1,id2=1 (cas possible)
est-il possible dans ce cas d'indexer quelque chose pour accèlerer les requetes ? |
|
| |
|
 |
| |
|
|