Уважаемые rail0rz!

При разработке проектов старайтесь как можно реже использовать сырые SQL-запросы. Вместо этого лучше все делайте через :conditions, :include, :order и прочие опции для метода find. Даже если будет работать чуть-чуть медленнее - все равно избегайте сырого SQL. Лучше закэшировать результат, чем лезть в кишки и оптимизировать якобы "медленные" запросы.

Я вот только что потратил 4 часа на рефакторинг одного метода, который использовал сырые SQL-запросы, чтобы переделать выборку по связке one-to-many на polymorphic many-to-many. 4 часа! Просто на то, чтобы разобраться как работает это чудо-юдо с вложенными Select count(*), сортировками по полям непонятно каких таблиц, группировкой по другим полям других таблиц иразбивкой по страницам с помощью плагина.

Так что прежде чем писать "оптимизированный" код, подумайте, чью задницу вы поставляете с рефакторингом. Я уж не говорю даже про тестирование.