From: | Surfing <onlinesurfing(at)gmail(dot)com> |
---|---|
To: | Misa Simic <misa(dot)simic(at)gmail(dot)com> |
Cc: | "pgsql-sql(at)postgresql(dot)org" <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: Efficiency Problem |
Date: | 2013-03-17 11:43:16 |
Message-ID: | 5145AC54.7090009@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
IMMUTABLE solved the problem.
Thank you!
Il 17/03/2013 12.39, Misa Simic ha scritto:
> Hi,
>
> 1) Is function marked as immutable?
>
> 2) if immutable doesnt help... It should be possible execute it first,
> and use it in other dynamics things in where...
>
> Cheers,
>
> Misa
>
> Sent from my Windows Phone
> ------------------------------------------------------------------------
> From: Surfing
> Sent: 17/03/2013 12:16
> To: pgsql-sql(at)postgresql(dot)org <mailto:pgsql-sql(at)postgresql(dot)org>
> Subject: [SQL] Efficiency Problem
>
> Hi all,
> I'm composing a query from a web application of type:
>
> *SELECT * FROM table WHERE a_text_field LIKE replace_something
> ('%**/a_given_string/**%');*
>
> The function replace_something( ... ) is a stored procedure that
> replaces some particular characters with others.
> The problem is that I noticed that this query is inefficient... and I
> think that the replace_something ( ... ) function is called for each
> row of the table.
>
> This observation is motivated by the fact that it takes around 30
> seconds to execute on the table (of about 25,000 rows), whereas if I
> execute:
> *SELECT * FROM table WHERE a_text_field LIKE
> '**/pre_processed_string/**';*
>
> where/pre_processed_string///is the result of the application of
> replace_something ('%/a_given_string/%') it just takes 164ms.
>
> The execution of
> *SELECT replace_something ('%**/a_given_string/**%')*
> takes only 14ms.
>
> Summarizing,
> - Replace function: 14ms
> - SELECT query without replace function: 164ms
> - SELECT query with replace function: 30.000ms
>
> Morever, I cannot create a stored procedure that precalculate the
> /pre_processed_string /and executes the query, since I dinamically
> compose other conditions in the WHERE clause.
>
> Any suggestion?
>
> Thank you.
From | Date | Subject | |
---|---|---|---|
Next Message | Claudio Adriano Guarracino | 2013-03-17 15:47:38 | link |
Previous Message | Misa Simic | 2013-03-17 11:39:21 | Re: Efficiency Problem |