Re: array_except -- Find elements that are not common to both arrays - Mailing list pgsql-performance

From Vitalii Tymchyshyn
Subject Re: array_except -- Find elements that are not common to both arrays
Date
Msg-id 4E85B4AF.2090104@gmail.com
Whole thread Raw
In response to Re: array_except -- Find elements that are not common to both arrays  (bricklen <bricklen@gmail.com>)
Responses Re: array_except -- Find elements that are not common to both arrays  (bricklen <bricklen@gmail.com>)
Re: array_except -- Find elements that are not common to both arrays  (bricklen <bricklen@gmail.com>)
Re: array_except -- Find elements that are not common to both arrays  (Gavin Flower <GavinFlower@archidevsys.co.nz>)
List pgsql-performance
Since you are using except and not except all, you are not looking at
arrays with duplicates.
For this case next function what the fastest for me:

create or replace function array_except2(anyarray,anyarray) returns
anyarray as $$
select ARRAY(
(
select r.elements
from    (
         (select 1,unnest($1))
         union all
         (select 2,unnest($2))
         ) as r (arr, elements)
     group by 1
     having min(arr)=max(arr)
))
$$ language sql strict immutable;

Best regards, Vitalii Tymchyshyn

pgsql-performance by date:

Previous
From: Gregg Jaskiewicz
Date:
Subject: Re: PostgreSQL-9.0 Monitoring System to improve performance
Next
From: bricklen
Date:
Subject: Re: array_except -- Find elements that are not common to both arrays