In an attempt to understand what PostgreSQL is doing I''ve just
concocted
a mixin that logs the result of EXPLAIN ANALYZE for the query just 
executed. Now I only need to learn how to interpret the output...
  module PostgreSQLExplain
    def install
      ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
        include BoilerPlate::Tools::PostgreSQLExplain::InstanceMethods
      end
    end
    module_function :install
    module InstanceMethods
      protected
      def log(sql, name)
        result = super(sql, name)
        if @logger && @logger.level <= Logger::DEBUG
          explanation = @connection.exec(''EXPLAIN ANALYZE '' +
sql)
          @logger.debug(
            "start EXPLAIN ANALYZE\n" +
            explanation.result.join("\n") +
            "\nend EXPLAIN ANALYZE")
        end
        result
      end
    end
  end
I enable this mixin with a snippet in environment.rb:
if RAILS_ENV == ''development''
  require ''postgresql_explain''
  PostgreSQLExplain.install
end
Michael
-- 
Michael Schuerig               Most people would rather die than think.
mailto:michael-q5aiKMLteq4b1SvskN2V4Q@public.gmane.org                          
In fact, they do.
http://www.schuerig.de/michael/                      --Bertrand Russell