I have had a long conversation with Dan off line. My point wasn't to start adding indexes. My point was to ask whether the database schema was well designed for our application. I think matching indexes to joins is a good start. I hope I was pretty clear that I wanted this method to be repeated for Drupal core, and many other instances of Drupal with various modules installed. Starting with a good db schema design is just a start. If we could actually document why all the indices are there that would be a big step forward in helping people understand the db layer. With 182 indices I doubt anyone knows why each of those indices are there. I know that the Drupal community has been responsive to database performance issues in the past and I am confident that it will tackle slow page execution problems as they arise. I am looking for a more thorough analysis of actual runtime on which to make recommended changes. For example, I'd like to know what the slowest 5% page execution times are. I think having tools to know this is important for a good design of the database, regardless of whether it is a 'problem' or not. At this point, I am just asking questions and sharing what I am learning. I'll put together a table schema for devel.module and batch update code next week. Cheers, Kieran