PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 31/07/2018 10:55:56

Geo-x
Membre

Conservation des 80000 derniers enregistrements

Bonjour @ tous.

J'ai une table dans laquelle je souhaiterais conserver les 80000 derniers enregistrements (et donc supprimer quotidiennement tous les enregistrements < aux 80000 derniers enregistrements).

Pour cela je souhaite faire une requête du type :

DELETE FROM matable l WHERE NOT EXISTS (SELECT uuid FROM matable r WHERE l.uuid = r.uuid ORDER BY integration_date ASC LIMIT 80000)

mais j'ai visiblement du mal à utiliser le NOT EXISTS puisqu'aucun enregistrement n'est pris en compte.

Avez-vous une idée sur comment reformuler cette requête ?

Merci de votre aide.

Geo-x

Hors ligne

#2 31/07/2018 11:01:56

gleu
Administrateur

Re : Conservation des 80000 derniers enregistrements

Pas sûr que vous puissiez utiliser le NOT EXISTS ici. Vous avez essayé avec un NOT IN à la place ?


Guillaume.

Hors ligne

#3 31/07/2018 11:03:51

Geo-x
Membre

Re : Conservation des 80000 derniers enregistrements

Oui le NOT IN fonctionne, c'est juste que j'avais observé par le passé une meilleur performance avec le NOT EXISTS

Hors ligne

#4 31/07/2018 12:22:59

gleu
Administrateur

Re : Conservation des 80000 derniers enregistrements

Le problème est surtout que votre requête avec le NOT EXISTS n'a pas de sens. Écrite ainsi, elle veut dire que vous voulez supprimer de matable tout ce qui n'existe pas de matable. Du coup, il est logique que ça ne supprime rien smile


Guillaume.

Hors ligne

Pied de page des forums