On Thu, Aug 02, 2007 at 01:18:22AM +0500, Pavel Ajtkulov wrote: > Hello, > > this patch allow to use Knuth-Morrison-Pratt algorithm for strpos() function > (see Cormen et al. Introduction to Algorithms, MIT Press, 2001). > > It also works with multibyte wchar. > > In worst case current brute force strpos() takes O(n * m) (n && m is length > of strings) > time (example: 'aaa...aaab' search in 'aaa...aaa'). > KMP algo always takes O(n + m) time. > To check this someone need to create a table with one text attribute, and > insert several thousands > record 'aa..aa'(for example, with lenght = 1000) . After execute "select > count(*) from test where > strpos(a, 'aaa....aab') > 0;" on current and modified version. > > Also, I advise to use "select .. where strpos(att, 'word') > 0;" instead > "select .. where attr like '%word%'" > (strpos must be faster than regex). > > In general, this belongs to artificial expressions. In natural language KMP > is equal (execution time) > current strpos() nearly.
Do you have any performance test results for this? -- Decibel!, aka Jim Nasby [EMAIL PROTECTED] EnterpriseDB http://enterprisedb.com 512.569.9461 (cell)
pgprzhuOBAr5D.pgp
Description: PGP signature