2010-08-28 4 views
1

Je reçois toujours ma tête MySQL ... INDICES Une petite question ...MySQL - Ajout de colonnes INDEXES à un index plusieurs seveurs

J'ai une table qui stocke un emplacement de membres. Il dispose d'un member_id et location_id colonnes ... Je fais une requête MySQL pour trouver tous les emplacements pour un membre spécifique ...

Serait-il préférable de configurer un INDEX comme ceci:

ALTER TABLE `members_locations` ADD INDEX `member_location` (`member_id` , `location_id`) 

Ou devrais-je les séparer comme ceci>

ALTER TABLE `members_locations` ADD INDEX `member_id` (`member_id`); 
ALTER TABLE `members_locations` ADD INDEX `location_id` (`location_id`); 

Cela fait-il une différence?

Répondre

1

This article should be helpful.

En voici un exemple: ALTER TABLE acheteurs ADD INDEX idx_name_age (prénom, nom, âge);

Here's another article montrant la différence entre l'utilisation d'un index à plusieurs colonnes et plusieurs index à une seule colonne.

0

Eh bien,

Je pense qu'il serait préférable d'avoir un indice, mais cela dépend en fait de la façon dont vous l'interroger.

Si vous avez les deux colonnes (member_id, location_id) dans la clause where, elles doivent définitivement entrer dans un index.

si vous les interrogez indépendamment, par ex. parfois par member_id, parfois par location_id seulement, vous pourriez considérer deux index. Cependant, même dans ce cas, l'un de ces index devrait probablement inclure la deuxième colonne pour prendre en charge les requêtes où les deux colonnes sont présentes. En fin de compte, tout dépend des requêtes que vous souhaitez régler. En fin de compte, tout dépend des requêtes que vous souhaitez régler.

Bien que ce ne soit pas pour MySQL, mais pour Oracle, mon nouveau Web-Book «Use The Index, Luke» le décrit en détail. AFAIK toutes les bases de données sont assez similaires à cet égard.

http://use-the-index-luke.com/where-clause/the-equals-operator/concatenated-keys

Questions connexes