Gregory Stark wrote:
> "Bruce Momjian" <[EMAIL PROTECTED]> writes:
> 
> >> No, we did substring() too :)
> >
> > Uh, I looked at text_substring(), and while there is an optimization to
> > do character counting for encoding length == 1, it is still accessing
> > the data.
> 
> Sure but it'll only access the first chunk. There are two chunks in your test.
> It might be interesting to run tests accessing 0 (length()), 1 (substr()), and
> 2 chunks (hashtext()).
> 
> Or if you're concerned with the cpu cost of hashtext you could calculate the
> precise two bytes you need to access with substr to force it to load both
> chunks. But I think the real cost of unnecessary toasting is the random disk
> i/o so the cpu cost is of secondary interest.

OK, will run a test with hashtext().  What I am seeing now is a 10-20x
slowdown to access the TOAST data, and a 0-1x speedup for accessing the
non-TOAST data when the rows are long:

        http://momjian.us/expire/TOAST/

-- 
  Bruce Momjian  <[EMAIL PROTECTED]>          http://momjian.us
  EnterpriseDB                               http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Reply via email to