Grosse base de données lente

Par sofianegargouri, il y a 9 ans


Base de données MySQL

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.

Schéma de la BDD

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

betaWeb, il y a 9 ans

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).

sofianegargouri, il y a 9 ans

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

TrimA74, il y a 9 ans

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