Thread: lower или LIKE?
Господа! Я вижу, что заработали lower и upper для русских строк. Но: я привык делать базы в UNICODE, а чтобы при этом работали lower/upper, нужно делать initdb с локалью ru_RU.UTF-8. Но тогда отваливается использование индексов для LIKE. Получается, что это непреодолимая дилемма? Или lower/upper, или LIKE по индексу? -- Best regards, Nick (GPG Key ID: 4396B2D0)
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---559023410-953690185-1106252533=:8381 Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed Content-Transfer-Encoding: 8BIT On Thu, 20 Jan 2005, Nick Gazaloff wrote: > Господа! > > Я вижу, что заработали lower и upper для русских строк. Но: я привык делать > базы в UNICODE, а чтобы при этом работали lower/upper, нужно делать initdb с > локалью ru_RU.UTF-8. Но тогда отваливается использование индексов для LIKE. > > Получается, что это непреодолимая дилемма? Или lower/upper, или LIKE по > индексу? > можно патчик сделать на пару строчек :) я когда-то делал для 7.4 по чьей-то просьбе. > > Regards, Oleg _____________________________________________________________ Oleg Bartunov, sci.researcher, hostmaster of AstroNet, Sternberg Astronomical Institute, Moscow University (Russia) Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(095)939-16-83, +007(095)939-23-83 ---559023410-953690185-1106252533=:8381--
On Thu, Jan 20, 2005 at 09:44:49PM +0300, Nick Gazaloff wrote: > Господа! > > Я вижу, что заработали lower и upper для русских строк. Но: я привык > делать базы в UNICODE, а чтобы при этом работали lower/upper, нужно > делать initdb с локалью ru_RU.UTF-8. Но тогда отваливается использование > индексов для LIKE. > > Получается, что это непреодолимая дилемма? Или lower/upper, или LIKE по > индексу? Начиная вроде с 7.4 можно задать индексу opclass varchar_pattern_ops, тогда он будет использоваться для LIKE и регекспов (рагумеется, только для LIKE 'string%' и ~ '^string'): http://borg.postgresql.org/docs/7.4/static/indexes-opclass.html Неудобно только, что отдельный индекс приходится строить. Между прочим, регекспы работают в разы быстрее LIKE. -- Fduch M. Pravking
Oleg Bartunov wrote: > On Thu, 20 Jan 2005, Nick Gazaloff wrote: > >> Господа! >> >> Я вижу, что заработали lower и upper для русских строк. Но: я привык >> делать базы в UNICODE, а чтобы при этом работали lower/upper, нужно >> делать initdb с локалью ru_RU.UTF-8. Но тогда отваливается >> использование индексов для LIKE. >> >> Получается, что это непреодолимая дилемма? Или lower/upper, или LIKE >> по индексу? >> > > можно патчик сделать на пару строчек :) я когда-то делал для 7.4 по > чьей-то просьбе. Было бы неплохо... А что правит патч? -- Best regards, Nick (GPG Key ID: 4396B2D0)
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---559023410-1489380298-1106258077=:8381 Content-Type: TEXT/PLAIN; CHARSET=koi8-r; FORMAT=flowed Content-Transfer-Encoding: 8BIT Content-ID: <Pine.GSO.4.61.0501210842211.8381@ra.sai.msu.su> On Fri, 21 Jan 2005, Nick Gazaloff wrote: > Oleg Bartunov wrote: >> On Thu, 20 Jan 2005, Nick Gazaloff wrote: >> >>> Господа! >>> >>> Я вижу, что заработали lower и upper для русских строк. Но: я привык >>> делать базы в UNICODE, а чтобы при этом работали lower/upper, нужно делать >>> initdb с локалью ru_RU.UTF-8. Но тогда отваливается использование индексов >>> для LIKE. >>> >>> Получается, что это непреодолимая дилемма? Или lower/upper, или LIKE по >>> индексу? >>> >> >> можно патчик сделать на пару строчек :) я когда-то делал для 7.4 по >> чьей-то просьбе. > > Было бы неплохо... > > А что правит патч? > Да там явным текстом написано запретить использование индекса для non-C локале. Надо взять и поправить это условие. Никак не могу вспомнить где это место было :) > Regards, Oleg _____________________________________________________________ Oleg Bartunov, sci.researcher, hostmaster of AstroNet, Sternberg Astronomical Institute, Moscow University (Russia) Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(095)939-16-83, +007(095)939-23-83 ---559023410-1489380298-1106258077=:8381--
>> >> А что правит патч? >> > > Да там явным текстом написано запретить использование индекса для non-C > локале. Надо взять и поправить это условие. Никак не могу вспомнить > где это место было :) Вот как вспомнишь и всё это в нормальном виде будет - будет готов первый вопрос для русской части FAQ. -- С уважением, Виктор