Bonjour à tous,

Je suis en train de développer un projet, disposant d'une très grande base de données (environ 80 000 entrées) anciennement sous fichier texte, dans un serveur MySQL. En développement, je n'avais qu'une centaine d'articles dans ma base de données donc les performances étaient normales. Cependant, en important la grande base de données, celle-ci est très très très longue. Je suis loin d'être spécialiste en MySQL, donc je fais appel à vous.
Les requêtes que je fais dans la table Articles (qui contient ces 80 000 entrées) sont soit les derniers articles, soit un article en particulier, soit des articles au hasard, soit la liste des articles, mais de manière paginée.

Je voulais donc savoir ce que vous me conseillez de faire. J'ai entendu parler d'index de tables, mais je n'ai pas tout compris. Merci de votre aide d'avance !

3 réponses


TrimA74
Réponse acceptée

Sans index, la système va parcourir séquentiellement les articles (un par un) et te renvoyer ceux qui correspondent aux critères de recherche.
Quand tu crées un index sur une colonne, cela va créer une autre table avec 2 champs clé-valeur qui sera triée par rapport au valeur de ta colonne. Lors d'une recherche avec un index le système fait une recherche par dichotomie vu que les valeurs seront triées par rapport à la colonne ainsi la requête exécutée est beaucoup plus rapide.

http://blog.developpez.com/sqlpro/p9816/langage-sql-norme/tout_sur_l_index

Salut,

C'est (trèèèès) loin d'être une grosse base de données ;)
Si tu constates des problèmes de performances, ajoutes des index aux champs qui sont utilisés pour trier, filtrer (ORDER BY, GROUP BY) ou rechercher par exemple (généralement, on place un index sur les clés étrangères, ou un slug par exemple).

J'ai ajouté des index sur name, promotion_price quantity pvttc brand_id category_id.

Est-ce suffisant ?

Et peux-tu m'éclairer à quoi sert l'indexage