2011-02-03 3 views
1

J'ai une petite question sur les jointures dans mysql et l'indexation. Si j'avais 2 tables:Indexation des jointures dans la base de données mysql

table1 
id 
name 

table2 
table1id 
table2title 

Et je me joins table2 et en utilisant table1 id et table1id voudrais-je ajouter un index id sur Table1 et table1id dans table2? Ou devrais-je simplement ajouter un index à l'une des tables? Im using MySQL avec MyISAM version 5.x

Répondre

3

Si table1. id est une clé primaire, alors vous n'avez pas besoin de l'indexer. (Les clés primaires sont automatiquement indexées) Si ce n'est pas le cas, vous devez indexer table1. id et table2. Utilisez "EXPLAIN" dans votre choix pour voir quels index vous frappez.

2

Oui, ajoutez un index sur les deux colonnes id (comme une autre affiche a indiqué, les colonnes primary sont indexées). Indices permettent à MySQL de quickly locate la ligne dans un fichier de données, au lieu de lire séquentiellement.

Si vous avez besoin d'un ID pour les lignes des deux tables, indexez les deux tables pour obtenir des performances optimales. Sinon, la clause initiale (SELECT...WHERE) s'exécutera rapidement et le JOIN sera lent (ou vice versa), ce qui entraînera une requête lente.

Questions connexes