X-Original-To: pgsql-performance-postgresql.org@localhost.postgresql.org Received: from localhost (av.hub.org [200.46.204.144]) by postgresql.org (Postfix) with ESMTP id 16A979DC9A5 for ; Tue, 10 Jan 2006 18:21:36 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 10116-02 for ; Tue, 10 Jan 2006 18:21:37 -0400 (AST) X-Greylist: from auto-whitelisted by SQLgrey- Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id BD8759DC98A for ; Tue, 10 Jan 2006 18:21:31 -0400 (AST) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.13.1/8.13.1) with ESMTP id k0AMLP7O006399; Tue, 10 Jan 2006 17:21:25 -0500 (EST) To: Simon Riggs cc: Matteo Beccati , Andrea Arcangeli , pgsql-performance@postgresql.org Subject: Re: NOT LIKE much faster than LIKE? In-reply-to: <1136930796.21025.486.camel@localhost.localdomain> References: <20060110014447.GB18474@opteron.random> <24021.1136858688@sss.pgh.pa.us> <20060110022303.GA20168@opteron.random> <24372.1136861684@sss.pgh.pa.us> <43C3799D.5030103@beccati.com> <1625.1136915395@sss.pgh.pa.us> <1136930796.21025.486.camel@localhost.localdomain> Comments: In-reply-to Simon Riggs message dated "Tue, 10 Jan 2006 22:06:36 +0000" Date: Tue, 10 Jan 2006 17:21:25 -0500 Message-ID: <6398.1136931685@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, score=0.08 required=5 tests=[AWL=0.080] X-Spam-Score: 0.08 X-Spam-Level: X-Archive-Number: 200601/93 X-Sequence-Number: 16571 Simon Riggs writes: > I think its OK to use the MCV, but I have a problem with the current > heuristics: they only work for randomly generated strings, since the > selectivity goes down geometrically with length. We could certainly use a less aggressive curve for that. You got a specific proposal? >> After finishing that work it occurred to me that we could go a step >> further: if the MCV list accounts for a substantial fraction of the >> population, we could assume that the MCV list is representative of the >> whole population, and extrapolate the pattern's selectivity over the MCV >> list to the whole population instead of using the existing heuristics at >> all. In a situation like Andreas' example this would win big, although >> you can certainly imagine cases where it would lose too. > I don't think that can be inferred with any confidence, unless a large > proportion of the MCV list were itself selected. Otherwise it might > match only a single MCV that just happens to have a high proportion, > then we assume all others have the same proportion. Well, of course it can't be inferred "with confidence". Sometimes you'll win and sometimes you'll lose. The question is, is this a better heuristic than what we use otherwise? The current estimate for non-anchored patterns is really pretty crummy, and even with a less aggressive length-vs-selectivity curve it's not going to be great. Another possibility is to merge the two estimates somehow. > I would favour the idea of dynamic sampling using a block sampling > approach; that was a natural extension of improving ANALYZE also. One thing at a time please. Obtaining better statistics is one issue, but the one at hand here is what to do given particular statistics. regards, tom lane