<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Раздел полезных советов: Как добиться, чтобы в запросах LIKE &apos;что&#037;&apos; использовался индекс ?</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/5519.html</link>
    <description>Из-за сложности и многообразия locale в постгресе запрещено использовать индекс&lt;br&gt;для запросов вида LIKE &apos;что&#037;&apos; для всех locale кроме &apos;C&apos;. А что делать если хочется ? &lt;br&gt;В 8.01 стало возможным использовать operator class &#091;1&#093; !  Мы будем использовать varchar_pattern_ops, B-tree индекс &lt;br&gt;в этом случае, будет строиться без использования collation правил из locale, а на основе сравнения буквы с буквой.&lt;br&gt;&lt;br&gt;   test=#  &#092;d ru_words &lt;br&gt;       w      &amp;#124; text &amp;#124; &lt;br&gt;       Indexes:&lt;br&gt;          &quot;w_idx&quot; btree (lower(w) varchar_pattern_ops)&lt;br&gt;&lt;br&gt;   test=# create index w_idx on ru_words (lower(w) varchar_pattern_ops);&lt;br&gt;      CREATE INDEX&lt;br&gt;&lt;br&gt;   test=# vacuum analyze test;&lt;br&gt;&lt;br&gt;   test=# explain analyze select w from ru_words where lower(w) like &apos;что&#037;&apos;;&lt;br&gt;&lt;br&gt;       Index Scan using w_idx on ru_words...&lt;br&gt;         Index Cond: ((lower(w) ~&amp;gt;=~ &apos;что&apos;::character varying) AND (lower(w) ~&amp;lt;~ &apos;чтп&apos;::character varying))&lt;br&gt;         Filter: (lower(w) ~~ &apos;что&#037;&apos;::text)&lt;br&gt;&lt;br&gt;&lt;br&gt;URL: http://www.sai.msu.su/~megera/oddmuse/index.cgi/pgsql_tips&lt;br&gt;Обсуждаетс</description>

<item>
    <title>Как добиться, чтобы в запросах LIKE &apos;что&#037;&apos; использовался инд... (ku)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/5519.html#2</link>
    <pubDate>Wed, 23 Nov 2011 18:04:39 GMT</pubDate>
    <description>Создаю индекс так:&lt;br&gt;create unique index idx_username on usersfrontend using btree (lower(username) varchar_pattern_ops);&lt;br&gt;&lt;br&gt;Итоговая таблица:&lt;br&gt;&#092;d+ usersfrontend&lt;br&gt;                                           Table &quot;public.usersfrontend&quot;&lt;br&gt;   Column   &amp;#124;            Type             &amp;#124;                        Modifiers                        &amp;#124; Description &lt;br&gt;------------+-----------------------------+---------------------------------------------------------+-------------&lt;br&gt; id         &amp;#124; integer                     &amp;#124; not null default nextval(&apos;usersfrontend_seq&apos;::regclass) &amp;#124; &lt;br&gt; username   &amp;#124; character varying(16)       &amp;#124; not null                                                &amp;#124; &lt;br&gt;Indexes:&lt;br&gt;    &quot;idx_username&quot; UNIQUE, btree (lower(username::text) varchar_pattern_ops)&lt;br&gt;    &quot;idx_usersfrontend_uniq&quot; UNIQUE, btree (id)&lt;br&gt;    &quot;idx_username_password&quot; btree (username, password)&lt;br&gt;&lt;br&gt;Ну вот что в итоге:&lt;br&gt;explain analyze select username from usersfrontend where lower(username) like &apos;Dex&#037;&apos;;   </description>
</item>

<item>
    <title>Как добиться, чтобы в запросах LIKE &apos;что&#037;&apos; использовался индекс ? (Остров)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/5519.html#1</link>
    <pubDate>Sat, 23 Apr 2005 12:13:04 GMT</pubDate>
    <description>Добавляйте в заголовок &quot;PostgreSQL&quot; иначе путаете многоих...</description>
</item>

</channel>
</rss>
