Re: Index scan with like expressions

Поиск
Список
Период
Сортировка
От Tonio Caputo
Тема Re: Index scan with like expressions
Дата
Msg-id 1184779171.7307.69.camel@heracles.melo
обсуждение исходный текст
Ответ на Re: Index scan with like expressions  (Heikki Linnakangas <heikki@enterprisedb.com>)
Список pgsql-jdbc
Thanks heikki, for your quick and very precise answer.

I understood the problem soon after sending the e-mail, but
I didn't know nothing about the prepareThreshold=0 parameter.

thanks again
tonio

On Wed, 2007-07-18 at 09:41 +0100, Heikki Linnakangas wrote:
> Tonio Caputo wrote:
> > I'm having some trouble with index scan using like expressions, using
> > JDBC, but not in psql where the index is used.
> > ...
> > My query:
> >     select beings_id from inscriptions
> >     where code like '999999';
> > ...
> > If I do it from my java application explicitly writing my code value
> > in the sql-string I get the correct plan.
>
> Index can only be used for a LIKE expression if there's no % or _ in the
> beginning of the string. For example, "LIKE 'foobar'" and "LIKE 'foo%'"
> can use the index, looking for the string 'foobar', or anything that
> begins with 'foo'. But for expressions like "LIKE '%bar'", the index
> can't be used.
>
> If you use a parameter marker, "LIKE ?", the planner doesn't know if the
> string you're going to give as parameter is such that the index can be
> used, so it has no choice but choose a plan that works regardless of the
> parameter value, which is a seq scan in this case.
>
> You can use prepareThreshold=0 connection parameter to disable
> server-side prepared statements, so that the query is planned every time
> it's executed. That way the planner can check the parameter value each
> time, and use the index when possible.
>


В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Ingmar Lötzsch
Дата:
Сообщение: IN clause with PreparedStatement
Следующее
От: "Marco Tozzi"
Дата:
Сообщение: jdbc supports struct?