Received: from localhost (maia-3.hub.org [200.46.204.184]) by postgresql.org (Postfix) with ESMTP id B05989FB262 for ; Mon, 5 Mar 2007 15:19:40 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.184]) (amavisd-new, port 10024) with ESMTP id 55796-05 for ; Mon, 5 Mar 2007 15:19:18 -0400 (AST) X-Greylist: delayed 00:06:29.647272 by SQLgrey-1.7.4 Received: from lightning.he.net (lightning.he.net [64.62.240.2]) by postgresql.org (Postfix) with SMTP id 4F6639FB214 for ; Mon, 5 Mar 2007 15:19:20 -0400 (AST) Received: from dino-1.misuse.org ([68.120.198.62]) by lightning.he.net for ; Mon, 5 Mar 2007 11:12:44 -0800 X-Mailer: QUALCOMM Windows Eudora Version 7.1.0.9 Date: Mon, 05 Mar 2007 11:12:31 -0800 To: pgsql-sql@postgresql.org From: Steve Midgley Subject: GiST index question: performance Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Message-Id: <20070305191920.4F6639FB214@postgresql.org> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=1.773 tagged_above=0 required=5 tests=AWL, BAYES_50, FORGED_RCVD_HELO, MSGID_FROM_MTA_ID X-Spam-Level: * X-Archive-Number: 200703/24 X-Sequence-Number: 27662 Hi, First off, can I say how much I love GiST? It's already solved a few problems for me that seemed impossible to solve in real-time queries. Thanks to everyone who works on that project! I'm developing a geographic index based on a set of zip code boundaries. Points of interest (POI) will fall within some boundaries and not others. I need to search to find which POI are within a specified boundary. I think have two options (see below) and I'm wondering if anyone has an opinion or experience as to whether one or the other will have substantially different performance characteristics. I can obviously test when I get that far, but I'd prefer to try the anticipated faster route first, if anyone has existing experience they can share: 1) Index a series of circles of NN radius around each boundary marker (lat/long point). Run a search on POI for those that fall within any of the specified circles. 2) Index a set of polygons that mark the "minimum area" around the boundary markers in question. Run a search on POI that fall within this single polygon. The polygon will have more points, but there will be more circles to search - my understanding of GiST is limited so I'm not sure if there's a performance benefit to searching many circles or a few polygons. My tables are of this size: # of POI: 50,000 # of zip blocks (with and without regions): 217,000 # of zip blocks in a given city (and hence in a given polygon): ~5 Any thoughts or ideas? Thank you, Steve p.s. I could use a GIS system alongside of Postgres but performance and efficiency are key to this system, and it seems to me that raw GiST indexed SQL queries are going to be fastest and create the lowest load on the server?