Efficiency Problem

From: Surfing <onlinesurfing(at)gmail(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: Efficiency Problem
Date: 2013-03-17 11:15:18
Message-ID: 5145A5C6.9000703@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

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.
//

Browse pgsql-sql by date

  From Date Subject
Next Message Misa Simic 2013-03-17 11:39:21 Re: Efficiency Problem
Previous Message Ben Morrow 2013-03-17 01:36:37 Re: ZIP function