2010-12-03 33 views
0

J'ai donc une classe qui crée une table à remplir avec des données. À l'heure actuelle, j'ai tous les noms de colonnes identiques (nom_produit, date, etc.). J'ai remarqué que lorsque je vois mes tables dans Webmin, il n'y a qu'un seul index nommé "product_date" malgré le fait qu'il y ait, supposément, deux tables utilisant l'index. Je ne pense pas que cela puisse être bon.Deux tables, avec des index, avec les mêmes noms de colonne, contenant des informations différentes ... y aura-t-il un conflit?

Ma question est de savoir si cela va provoquer un conflit dans le futur? Je ne veux pas remplir les tables avec des milliers de lignes si je n'ai besoin de tout restructurer que plus tard. Je ne peux pas imaginer que je sois le premier à rencontrer ça ... peut-être que je suis juste mal informé sur le fonctionnement des index/webmin affiche des index et est trop paranoïaque.

(modifier) ​​

En réponse à un commentaire ci-dessous, voici les résultats de SHOW CREATE TABLE tablename:

c_1 | CREATE TABLE c_1 (
    p_id int(11) NOT NULL auto_increment, 
    nm varchar(100) NOT NULL, 
    m_name text NOT NULL, 
    PRIMARY KEY (p_id), 
    KEY nm (nm), 
    FULLTEXT KEY m_name (m_name) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 

c_2 | CREATE TABLE c_2 (
    p_id int(11) NOT NULL auto_increment, 
    ne varchar(100) NOT NULL, 
    m_name text NOT NULL, 
    PRIMARY KEY (p_id), 
    KEY nm (nm), 
    FULLTEXT KEY metaphone_name (m_name) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 

Notez que tous les index sur les colonnes équivalentes sont nommées de la même façon.

+0

Vérifiez-vous l'index sur la table ou sur une table unique? Peut-être que les index sont créés sur les deux tables. Essayez 'show create table yourtablename 'sur les deux tables pour voir. – Danosaure

Répondre

0

Si c'est un index par table, pas de problème

+0

Je pense que vous avez raison, mon problème était mon manque de familiarité avec Webmin qui donne l'impression qu'il n'y a qu'un seul index par colonne partagé par plusieurs tables. C'est ce que j'ai pour utiliser une interface graphique. J'ai pu utiliser 'SHOW INDEXES FROM c1;' et 'SHOW INDEXES FROM c2;' et ils ont tous les deux semblé légitimes ... merci pour l'aide. –

0

Si je comprends bien votre question (un grand if), vous devez créer un index pour chaque table. Les index ne couvrent pas plus d'une table jusqu'à ce que vous abordiez des concepts avancés comme les vues indexées/matérialisées, ce que MySQL ne gère pas.

+0

Lorsque je crée les tables, je crée un index pour chaque table ... mais mes index ont les mêmes noms. J'ai besoin de savoir si cela créera un conflit plus tard, ou si je devrais changer les noms de colonnes sur chaque table afin que les index (qui sont automatiquement créés lors de la création de la table) soient nommés différemment. –