Salut,
j'ai créé la vue ci-dessous sous Postgresql. J'ai créé des index sur les différents id. Il y a environ 2500 enregistrements dans la table demande (autrement dit rien).
Si je fais un select count(*) de la vue ça prend 10 s. je pige pas pourquoi.
Merci de vos conseils.
Nestor.
CREATE VIEW gestion AS
SELECT demande.id_demande,
demande.id_service,
demande.objet,
demande.date_debut_demande,
etape.id_etape,
etape.date_etape,
procedures.libelle_procedure,
version,
environnement,
demande.id_demandeur,
demande.fin,
etape.id_procedure,
demande.id_version,
service.no_compte,
etape.id_responsable,
item_etape.id_actioneur
FROM demande,etape,procedures,version,service,item_etape
WHERE demande.id_demande = etape.id_demande
AND etape.id_etape = (SELECT max(id_etape) FROM etape WHERE demande.id_demande = etape.id_demande)
AND item_etape.id_item = (SELECT MIN(id_item) FROM item_etape WHERE item_etape.id_etape = etape.id_etape)
AND etape.id_procedure = procedures.id_procedure
AND demande.id_version = version.id_version
AND service.id_service = demande.id_service
UNION
SELECT demande.id_demande,
demande.id_service,
demande.objet,
demande.date_debut_demande,
null,
null,
null,
version,
environnement,
demande.id_demandeur,
demande.fin,
null,
demande.id_version,
service.no_compte,
null,
null
FROM demande,version,service
WHERE demande.id_demande
NOT IN (SELECT etape.id_demande FROM etape)
AND demande.id_version = version.id_version
AND service.id_service = demande.id_service;
En fait je veux toutes les demandes avec leur dernière étape (s'il y en a une) et le premier item de l'étape.