J'ai une table contenant les temps d'exécution pour les générateurs sur différents sites, et je veux sélectionner l'entrée la plus récente pour chaque site. Chaque générateur est exécuté une ou deux fois par semaine.Les requêtes en ligne sont-elles une mauvaise idée?
J'ai une requête qui fera cela, mais je me demande si c'est la meilleure option. Je ne peux pas m'empêcher de penser que l'utilisation de WHERE x IN (SELECT ...) est paresseuse et n'est pas la meilleure façon de formuler la requête - n'importe quelle requête.
Le tableau se présente comme suit:
CREATE TABLE generator_logs (
id integer NOT NULL,
site_id character varying(4) NOT NULL,
start timestamp without time zone NOT NULL,
"end" timestamp without time zone NOT NULL,
duration integer NOT NULL
);
Et la requête:
SELECT id, site_id, start, "end", duration
FROM generator_logs
WHERE start IN (SELECT MAX(start) AS start
FROM generator_logs
GROUP BY site_id)
ORDER BY start DESC
Il n'y a pas une énorme quantité de données, donc je ne suis pas inquiet pour l'optimisation de la requête. Cependant, je dois faire des choses similaires sur des tables avec des dizaines de millions de lignes, (de grandes tables en ce qui me concerne!) Et l'optimisation est plus importante.
Y a-t-il une meilleure requête pour cela, et les requêtes en ligne sont-elles généralement une mauvaise idée?
vous signifie probablement * sous_requête *, pas une requête "inline"? – TMS