On Tue, 2008-02-19 at 14:20 -0500, Douglas J Hunley wrote: > > Keep in mind, if you have several GB worth of indexes, they take up > > basically no space in the logical dump (just the "CREATE INDEX" command, > > and that's it). But they can take a lot of processor time to build up > > again, especially with localized text. > > > > that could be a factor here. It is a UNICODE db, and we do a lot of text-based > indexing for the application I assume you're _not_ talking about full text indexes here. These factors: * unicode (i.e. non-C locale) * low I/O utilization * indexes taking up most of the 7 hours mean that we've probably found the problem. Localized text uses sorting rules that are not the same as binary sort order, and it takes much more CPU power to do the comparisons, and sorts are already processor-intensive operations. Unfortunately postgresql does not parallelize this sorting/indexing at all, so you're only using one core. I'd recommend restoring everything except the indexes, and then you can restore the indexes concurrently in several different sessions so that it uses all of your cores. Build your primary key/unique indexes first, and then after those are built you can start using the database while the rest of the indexes are building (use "CREATE INDEX CONCURRENTLY"). Regards, Jeff Davis ---------------------------(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