Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 20/04/2010 11:54:30
- R.Seif
- Membre
Appel de deux fonctions ou jointure??
Bonjour,
Je me demandais c koi la solution la plus optimale?
est ce d'opter à chaque fois à l'appel de deux fonctions chacune scanne une table et rende un résultalt, ou bien faire une jointure entre les deux table avec toutes les conditions et rendre un seul résultat????
Hors ligne
#2 20/04/2010 14:24:03
- gleu
- Administrateur
Re : Appel de deux fonctions ou jointure??
Je ne vois pas ce qu'on peut répondre d'autres que : ça dépend. Avec un peu plus de détails, il serait plus facile d'émettre un avis éclairé. À priori, utiliser des fonctions n'est pas un gain de perfs... mais bon, tout dépend du cas.
Guillaume.
Hors ligne
#3 20/04/2010 15:36:06
- R.Seif
- Membre
Re : Appel de deux fonctions ou jointure??
create OR replace FUNCTION mape_get_ip(inet) RETURNS integer
AS $$
DECLARE
addr ALIAS for $1;
ipid integer;
BEGIN
select into ipid ip from ips where ips.ip= addr;
return ipid;
end;$$
LANGUAGE plpgsql;
--------------------------------------------------------------------------------------
create OR replace FUNCTION mape_get_peer(inet,integer) RETURNS integer
AS $$
DECLARE
addr ALIAS FOR $1;
port ALIAS FOR $2;
ipid integer;
peerid integer;
BEGIN
-- Get the ID corresponding to the address
select into ipid mape_get_ip(addr);
IF ipid >= 1
then
select into peerid id FROM peers WHERE peers.ip = addr AND peers.port = port;
return peerid;
else
return 0;
end IF;
end;$$
LANGUAGE plpgsql;
----------------------------------------------------------------------------------------
select into peerid mape_get_peer(p_addr,p_port);
ou bien
create or replace FUNCTION mape_get_peer(inet,integer) RETURNS integer
AS $$
DECLARE
addr ALIAS for $1;
port ALIAS for $2;
--ipid integer;
peerid integer;
BEGIN
select into peerid id from peers, ips
where peers.ip = ips.ip and peers.id = ips.id and peers.ip = addr and peers.port = port;
if peerid > 0
return peerid;
else
return 0;
end IF;
end;$$
LANGUAGE plpgsql;
Hors ligne
#4 20/04/2010 15:46:49
- gleu
- Administrateur
Re : Appel de deux fonctions ou jointure??
Très clairement la jointure sera gagnante.
Guillaume.
Hors ligne
#5 20/04/2010 15:49:48
- R.Seif
- Membre
Re : Appel de deux fonctions ou jointure??
Merci
Hors ligne
Pages : 1