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