|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : avril 2005 Messages : 360 ![]() |
Bonjour,
Dans une base de données, j ai trouvé 2 erreurs: - La colonne `id` ne devrait pas faire partie à la fois d'une clé primaire et d'une clé index - Plus d'un index de type INDEX existe pour la colonne `id` Quelqu'un peut m'expliquer pourquoi? Merci
__________________
« Seuls vos vrais amis savent où vous frappez pour que ça fasse mal. » - Bernard Werber |
|
|
00
|
|
|
#2 |
![]() ![]() Michel Consultant informatique Inscription : mai 2005 Messages : 3 006 ![]() |
salut,
peux tu donner le script de creation de ta table?quelle version tu utilises? |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : avril 2005 Messages : 360 ![]() |
Version du client MySQL: 5.0.24a
phpMyAdmin - 2.9.0.3 CREATE TABLE `test` ( `id` int(10) NOT NULL auto_increment, `code` char(3) NOT NULL default '', `pays` char(160) NOT NULL default '', `cost` float NOT NULL default '0', `status` tinyint(2) NOT NULL default '0', PRIMARY KEY (`id`), KEY `id` (`id`), KEY `code` (`code`), KEY `pays` (`pays`), KEY `status` (`status`), KEY `id_code` (`id`,`code`), KEY `cost` (`cost`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=257 ;
__________________
« Seuls vos vrais amis savent où vous frappez pour que ça fasse mal. » - Bernard Werber |
|
|
00
|
|
|
#4 | |||
|
Membre Expert
![]() Inscription : février 2006 Messages : 953 ![]() |
La clef primaire est indexée d'office donc mettre un index explicite dessus n'a pas de sens, ni l'utilier comme partie d'un index sur plusieurs colonnes car il suffit à lui seul à identifier une ligne. Ce qui pourrait expliquer l'erreur.
J'ai aussi vu ça dans la doc : Citation:
Citation:
Edit 2 : Citation:
|
|||
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : avril 2005 Messages : 360 ![]() |
Merci pour cette explication.
Voulez vous me dire que veut on dire par index? ça sert a quoi? Merci d avance
__________________
« Seuls vos vrais amis savent où vous frappez pour que ça fasse mal. » - Bernard Werber |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : février 2006 Messages : 953 ![]() |
En version courte un index sur une colonne (ou plusieurs) est une liste triée de toutes ses valeurs qui sert à rechercher rapidement (dans les 'where' et 'join' essentiellement) une valeur ou une plage sans devoir parcourrir toute la table, bref un peu comme l'index à la fin d'un livre. Pour chaque valeur il indique la ou les enregistrements de la table correspondants.
J'aurais voulu faire un mais je n'ai pas réussi à trouver une réelle explication, juste du quand les utiliser, vérifier qu'ils sont utilisés...http://mysql.developpez.com/faq/?pag...S_mettre_index http://dev.mysql.com/doc/refman/5.0/fr/indexes.html |
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : avril 2004 Messages : 43 ![]() |
Pour info, j'ai moi aussi ce warning :
"Plus d'un index de type FULLTEXT existe pour la colonne `s_name`" car cette colonne (du varchar) est utilisée par 2 index fulltext différents. Mais bon, il me faut absolument ces 2 index, donc tant pis pour le warning. Ce qui est marrant, c'est qu'il ne bronche pas lorsque ça se produit avec des champs de type text. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com