Vous devez créer un index. Pas vraiment. Peut-être même plus d'un.
Les requêtes sur 7 millions de lignes sans un index va être lent. Vous pouvez diviser la table ou allouer une grande quantité de mémoire pour la mise en cache, mais les index vous donnent beaucoup plus pour le dollar.
Vous pouvez demander, quel (s) index (s) devriez-vous créer? Bonne question. Cela dépend des requêtes spécifiques que vous exécutez sur la table. La conception de table est déterminée par vos données, mais l'optimisation est déterminée par vos requêtes.
Apprenez à utiliser EXPLAIN. Voir Explain Demystified.
Apprenez comment fonctionnent les index. Voir More Mastering the Art of Indexing
Re votre commentaire: Oui, une clé primaire a implicitement un index (au moins en MySQL), mais je ne sais pas si la requête dont vous avez besoin pour améliorer les prestations de cet indice.
Voici un conseil: lorsque je veux expérimenter avec des index sur une très grande table, je crée une table de copie à partir d'un sous-ensemble de lignes. Mettez un nombre non trivial de lignes dans la table, mais assez peu pour travailler dessus ne prendra pas trop de temps.
Maintenant, vous pouvez créer et supprimer des index et tester les requêtes pour voir leur performance. Une fois que vous avez identifié l'index ou les index qui vous donnent le plus d'avantages, vous pouvez avoir plus de confiance que leur création sur votre base de données réelle en vaut la peine.
Convenu ... quels types de requêtes prennent apparemment pour toujours (très lent) qui sont vos plus grandes préoccupations ... Beaucoup de gens pourraient être ici capable d'aider d'une manière que vous n'auriez pas envisagée pour d'autres techniques d'optimisation – DRapp
Supprimer de où column1 dans (sélectionnez column1 from ); Supposons que la table1 possède 7 millions d'enregistrements avec une clé de primay. La table 2 a des index appropriés avec 50K enregistrements. –
Sharpeye500