[postgis-users] speeding up "not in" query

Michael Smedberg michael.smedberg at redfin.com
Sat Jul 24 19:06:18 PDT 2010


You might want to try a "not exists" constraint, like this:

SELECT *
FROM survey
WHERE NOT EXISTS
(SELECT parcel_esri.parcelnum
FROM parcels_esri WHERE parcel_esri.parcelnum = survey.parcelnum)

On Sat, Jul 24, 2010 at 2:09 PM, David Epstein <davideps at umich.edu> wrote:

> I have one spatial table and one non-spatial table each with about 380k
> rows. They can be joined by "parcelnum". However, there are some parcel
> numbers in each table that do not match. I want the full rows of the
> non-matching from each. I've made a standard (b-tree) index for
> "parcelnum" in both tables and then ran this query to get non-matching
> rows in a single direction:
>
> SELECT *
> FROM survey
> WHERE survey.parcelnum NOT IN
> (SELECT parcel_esri.parcelnum
> FROM parcels_esri)
>
> This query has already run for 35 minutes and is still running. I have a
> laptop running Ubuntu 9.04 64bit with two P8700 2.53GHz CPUs and 3.8GB
> of memory. Only 1 CPU and 1.3GB of memory is being used. Is there
> anything I can do to speed up not-in (and join) queries?
>
> thank you,
> -david
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20100724/575cdc4f/attachment.html>


More information about the postgis-users mailing list