Re: Left Join Not Using Index?

Поиск
Список
Период
Сортировка
От Ken Williams
Тема Re: Left Join Not Using Index?
Дата
Msg-id A3B017D4-7594-11D7-90B2-003065F6D85A@mathforum.org
обсуждение исходный текст
Ответ на Left Join Not Using Index?  (Hunter Hillegas <lists@lastonepicked.com>)
Список pgsql-general
On Tuesday, April 22, 2003, at 08:44  PM, Hunter Hillegas wrote:

> I have a left join that doesn't seem to be using an index I created,
> and the
> query's performance needs to improve.

[snip]

> The query is:
>
> SELECT DISTINCT message_board_topics.rec_num,
> message_board_topics.topic_name, message_board_topics.topic_body,
> message_board_topics.topic_author,
> message_board_topics.topic_author_email,
> message_board_topics.topic_updated,
> message_board_topics.administrator_topic,
> message_board_topics.number_of_comments, to_char(topic_date,
> 'MM.DD.YYYY')
> as formatted_date FROM message_board_topics left join
> message_board_comments
> on (message_board_comments.topic_id=message_board_topics.rec_num) WHERE
> upper(topic_name) LIKE upper('madbrowser') OR upper(topic_body) LIKE
> upper('madbrowser') OR upper(topic_author) LIKE upper('madbrowser') OR
> upper(message_board_comments.comment_author) LIKE upper('madbrowser')
> ORDER
> BY message_board_topics.rec_num DESC
>

I'm not very good at reading EXPLAIN output in Postgres yet, but it
seems like it's all those "upper(table.foo) LIKE upper('madbrowser')"
conditions that are causing the slowness.  For starters, change it to
"upper(table.foo) LIKE 'MADBROWSER'".  Then since you're not using
wildcards there, change it to "upper(table.foo) = 'MADBROWSER'".

  -Ken


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

Предыдущее
От: Stephan Szabo
Дата:
Сообщение: Re: Left Join Not Using Index?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Regexps and Indices.