Requête SQL avec un temps d'exécution de 7 secondes
Bonsoir,
Mon explication ne correspond pas vraiment à la réalité, je vais simplifier l'explication de ce à quoi sert ce que je fais.
Je possède une base de données avec une table unique qui contient les comptes utilisateurs de mon site.
Je possède une autre base de données avec un table qui contient plus de 2 500 000 enregistrements.
En faite chaque utilisateur peut obtenir 1000 choses différentes, et donc dans une table j'ai mis une colonne avec le nom d'utilisateur, une autre avec le numéro de la chose obtenue, une dernière colonne avec un enum avec OUI ou NON en fonction de si la chose a été obtenue.
Cela permet donc via un SELECT avec pour seul paramètre le nom d'utilisateur, tout ce que cet utilisateur a obtenu, ou pas obtenu.
Le problème est que la requête UPDATE pour mettre à jour la dernière colonne, celle qui indique si la chose a été obtenue ou non, a un temps d'exécution de 6 à 7 secondes. C'est beaucoup trop pour mettre à jour des centaines d'enregistrements via une tâche cron.
Quand je fais un
Code:
EXPLAIN UPDATE SuccesItemObtenu SET DejaObtenu = 'OUI' WHERE PlayerID = "Shart" AND IdObjet= 327;
je constate que ça parcours plus de 1 500 000 lignes avant d'arriver à trouver l'enregistrement correspondant, et j'imagine que c'est ce qui explique la lenteur.
Et pourtant je suis sur un serveur dédié.
Du coup j'aimerais savoir s'il y a une solution pour accélérer l'UPDATE de façon à ce que la tâche cron ne se prenne pas systématiquement un timeout alors que moins de 2% des requêtes ont été effectuées.
Merci d'avance