Re: [ADMIN] how to speed ilike
Julius Tuskenis jul...@nsoft.lt writes: Tried that too, but seem to me that ILIKE doesn't use the index. I'm using username ilike '%blablabla%' , so maybe theres no way for ilike to benefit from an index. See pg_trgm and Full Text Search. http://www.postgresql.org/docs/8.4/interactive/pgtrgm.html http://www.postgresql.org/docs/8.4/interactive/textsearch.html Regards, -- dim -- Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-admin
[ADMIN] how to speed ilike
Hello I have a task to make postgres find user records no matter if they are spelled correctly. In particular I have to find names with Lithuanian letters even if the user searches using latin letters. For example search criteria 'kestas' should find 'Kęstas'. I've made a function that converts lithuanian letters to latin and use it like fnk_latin(username) ILIKE fnk_latin('kestas'). It works OK. Now the problem is performance. On test data base I have 2 records of users, and it takes 3 seconds to get result. On production database there could be a lot more. How would you advice to improve performance? Maybe some special index would help? As user names are update rarely it's the read speed I'm interested in. -- Julius Tuskenis Programavimo skyriaus vadovas UAB nSoft mob. +37068233050 -- Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-admin
Re: [ADMIN] how to speed ilike
Julius Tuskenis wrote: I've made a function that converts lithuanian letters to latin and use it like fnk_latin(username) ILIKE fnk_latin('kestas'). Now the problem is performance. Maybe some special index would help? create index tblname_username_latin on tblname ((fnk_latin(username))); You might want to have that function force all letters to lowercase. It might also help to specify varchar_pattern_ops. -Kevin -- Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-admin
Re: [ADMIN] how to speed ilike
Thank you for your answer Kevin. create index tblname_username_latin on tblname ((fnk_latin(username))); Tried this, but with no changes You might want to have that function force all letters to lowercase. Tried that too, but seem to me that ILIKE doesn't use the index. I'm using username ilike '%blablabla%' , so maybe theres no way for ilike to benefit from an index. It might also help to specify varchar_pattern_ops. I added varchar_pattern_ops to index declaration, but this didn't help either. Do you have any other ideas? -- Julius Tuskenis Programavimo skyriaus vadovas UAB nSoft mob. +37068233050 -- Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-admin
Re: [ADMIN] how to speed ilike
On Mon, Jan 25, 2010 at 05:33:10PM +0200, Julius Tuskenis wrote: Thank you for your answer Kevin. create index tblname_username_latin on tblname ((fnk_latin(username))); Tried this, but with no changes You might want to have that function force all letters to lowercase. Tried that too, but seem to me that ILIKE doesn't use the index. I'm using username ilike '%blablabla%' , so maybe theres no way for ilike to benefit from an index. You cannot use an index for this search. It will work for 'blah%' otherwise you need to use full-text indexes a la tsearch. Cheers, Ken -- Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-admin