J'ai le problème suivant: ma table est assez grosse (millions de lignes de données), ce sont des données temporaires que je traite. J'ai besoin de sélectionner max et min d'une colonne en fonction de certains critères, traiter cette information et supprimer des données selon les mêmes critères. En fait, la mise en œuvre semble simple comme:supprimer et retourner des données dans PostgreSQL
select max(col), min(col) from _TABLE_ where _CONDITION_;
...
delete from _TABLE_ where _CONDITION_;
Table
est grande, et quand je le traiter, quering cette façon dans le cycle, il faut un certain temps. Je pensais que je peux optimiser en utilisant le « retour » à supprimer, comme
delete from _TABLE_ where _CONDITION_ returning max(col), min(col);
il serait tout à fait ce que je dois, mais ... ça ne fonctionne pas du tout :) parler que je ne peux pas utiliser des fonctions d'agrégation dans la clause de retour ...
Y a-t-il un bon moyen d'améliorer deux requêtes (en sélectionnant max/min de données et en supprimant les mêmes données) en faisant une requête à la place? Un truc?
vous remercie d'avance pour toute information, Maxym
sont la _CONDITIONS_ mutuellement exclusives et relativement faible nombre? – cope360
désolé, que voulez-vous dire? En fait "col" .. hm, en réalité j'ai deux colonnes, qui représentent la coordonnée du point (latitude et longitude), donc je sélectionne supprimer tous les points de la table selon un rectangle, mais je dois savoir quel était le min/max longitude et la longitude des points supprimés (réel, parce que je pourrais prendre environ rectangle :) – Maxym