John D. Burger wrote:
Christian Schröder wrote:

Or would it be possible to tweak how the planner determines the selectivity? I have read in the docs (chapter 54.1) that in case of more than one condition in the where clause, independency is assumed. In my case ("... where test like '11%' and test not like '113%'") this is clearly not the case, so it might be an interesting point to address.

I think the planner does think about the interactions of inequalities, so if you can express your query with less-than and friends, or even with BETWEEN, you might get a better plan. I don't know the details of your setup, but you can do things like this with any ordered type:

   where test between '11' and '113'
    or test >= '114'

I know this does not match the exact semantics of your query, but hopefully you get the idea.

There are two drawbacks of this solution:

  1. It is not always possible to rewrite the "like" or "substring"
     queries with standard relational operators.
  2. It is annoying for my users that they have to tewak the query
     until they find a solution that takes 5 seconds to finish instead
     of 4 hours.

I think it is my job as db admin to make the database work the way my users need it, and not the user's job to find a solution that fits the database's needs ...

Is there really nothing that I can do?

Regards,
   Christian

--
Deriva GmbH                         Tel.: +49 551 489500-42
Financial IT and Consulting         Fax:  +49 551 489500-91
Hans-Böckler-Straße 2                  http://www.deriva.de
D-37079 Göttingen

Deriva CA Certificate: http://www.deriva.de/deriva-ca.cer



---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

              http://archives.postgresql.org/

Reply via email to