|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 51 ![]() |
Bonjour à tous,
Dans une table, j'enregistre des relevés de compteurs. Cette lecture me conduit à obtenir des suites de valeurs identiques. J'aimerais supprimer les valeurs identiques les plus anciennes et ne conserver que la la récente. La table comporte environs 2,5 millions d'enr et les compteurs sont aux nombres de 5600. Code :
Exemple de données à supprimer : Code :
Et c'est catastrophiquement long ! La requête de sélection des valeurs à conserver Code :
Un index sur Valeur arrangerait-il quelque peu les perf ? |
||||||
|
|
00
|
|
|
#2 | ||||
|
Membre expérimenté
![]() Frédéric Inscription : juin 2011 Messages : 442 ![]() |
Si cette requête te donne bien les lignes a supprimer :
Code :
Tu peux faire ça : Code :
2) Il faut surement comparer DateHeure plutot que IDInformations |
||||
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 51 ![]() |
Merci Fred
Pquoi penses-tu qu'il faudrait plutôt utiliser DateHeure ? Je pensais, assez naturellement, que la comparaison d'entiers était plus rapide que celle de timestamp. Me serais-je fourvoyé ? Le problème de ta requête, c'est qu'elle ne va pas vérifier que c'est la valeur IMMEDIATEMENT suivante qui est identique. Dans : Code :
|
||
|
|
00
|
|
|
#4 | ||||
|
Membre expérimenté
![]() Frédéric Inscription : juin 2011 Messages : 442 ![]() |
Citation:
Citation:
Code :
|
||||
|
|
10
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 51 ![]() |
Houuu, c'est ingénieux ça.
Je ne sais pas si c'est rapide mais ça vaut le coup de tester. Je te tiens au courant. En lisant ton post, ça me donne une idée. Peut-être qu'en créant une table temporaire ou ne serait présent que les "informations" filtrées sur IDVersions_Machines et IDTypesInformation cela réduirait considérablement la table informations (2.5M / 5000) et permettrait en théorie de faire baisser drastiquement le temps de traitement. Pour la cohérence IDInformations, DateHeure, aucun risque. C'est la valeur NOW() qui est insérée donc si DateHeureN> DateHeureN+1 alors IDInformationsN > IDInformationsN+1 Et pour l'index sur Valeur, valable ou pas ? |
|
|
00
|
|
|
#6 | ||||
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 51 ![]() |
Bon c'est pas transcendant de rapidité mais l'idée était brillante.
La solution la plus rapide est celle qui passe par une table temporaire. Code :
Code :
|
||||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com