Bonjour,
On a fait développer un programme en C++ pour faire de l'acquisition de données avec ensuite écriture dans plusieurs tables d'une base MySQL (sous-entendu je ne suis pas développeur mais utilisateur).
Régulièrement, le programme écrit des données dans la table 1 avec, en particulier, une colonne NumeroAcquis (type int auto-incrémenté).
Puis le programme interroge la table 1 pour aller chercher le dernier n° de la colonne NumeroAcquis (type int auto-incrémenté) et aller le copier avec d'autres données dans une table 2.
On a remarqué que plus la table 1 grandit, plus le temps pour récupérer ce dernier n° augmente.
En regardant le programme, on a vu que le programmeur faisait un
SELECT NumeroAcquis from table 1;
Puis faisait une boucle en C++ pour trouver la dernière ligne.
Donc plus la base grandit (et elle grandit rapidement), plus ça prend du temps.
En regardant à droite à gauche, j'ai vu que je pouvais faire la même chose avec un
SELECT max(NumeroAcquis) from table 1;
ou avec un
SELECT NumeroAcquis from table1 order by NumeroAcquis DESC LIMIT 1;
Pouvez-vous me dire quelle requête est préférable en terme vitesse ou me dire comment vérifier la vitesse de ces deux requêtes ?
Une dernière question (ou deux) pour la route : j'ai aussi vu une commande last_insert_id(). Mais je n'arrive pas à l'utiliser (il sort toutes les lignes remplies avec un 0). Est-une bonne commande pour ce que je veux faire (plus rapide que les 2 précédentes) ? Et si oui, comment l'utiliser ?
Merci par avance pour votre aide,
Bon week-end,
Ptit Bleu.
Partager