Guillaume Smet wrote:
On 9/19/07, Andrew Dunstan <[EMAIL PROTECTED]> wrote:
Can you run the same set of tests in a single byte encoding like latin1?

Here are the results (each query was executed several times before this result):

** 8.1 **
cityvox_latin1=# SELECT e.numeve FROM evenement e WHERE e.libgeseve
ILIKE '%hocus pocus%';
  numeve
-----------
 900024298
     87578
(2 rows)

Time: 135.877 ms

** 8.2 **

cityvox_latin1=# SELECT e.numeve FROM evenement e WHERE e.libgeseve
ILIKE '%hocus pocus%';
  numeve
-----------
 900024298
     87578
(2 rows)

Time: 111.595 ms

** 8.3 **

cityvox_latin1=# SELECT e.numeve FROM evenement e WHERE e.libgeseve
ILIKE '%hocus pocus%';
  numeve
-----------
 900024298
     87578
(2 rows)

Time: 160.582 ms

Results are quite surprising but there's no error, I checked them
several times...




No, what this suggests to me is that it might have been a mistake to make the single byte case work like the multi-byte case, by pre-lowering the string, as we did back in May. It confirms my suspicion that the lower() code is the culprit. It should really be lightning fast.

Can you retry both sets of tests but this time in C locale? The lower() code works differently in C locale, and it might be that we need to look at tweaking just one case.

cheers

andrew

---------------------------(end of broadcast)---------------------------
TIP 7: You can help support the PostgreSQL project by donating at

               http://www.postgresql.org/about/donate

Reply via email to