Caching = ответы на ваш запрос извлекаются из кеша (RAM), если они там есть.Доступ к базе данных возможен только при отсутствии кеша.
Индексирование = помогает базе данных отвечать на некоторые запросы (намного) быстрее (упрощенное определение, но здесь достаточно для моей цели).
Итак, кешускоряет запросы, вообще не обращаясь к базе данных, в то время как индекс ускоряет запросы, проходящие через кеш и попадающие в базу данных.
Преимущества кэширования зависят от специфики вашего приложения.Если в большинстве запросов запрашиваются одни и те же данные или у вас гораздо меньше обновлений, чем при чтении, рекомендуется использовать слой кэширования.Однако даже в лучших сценариях, которые я видел, 15-20% запросов все еще доходят до базы данных.Это означает, что вы не можете полагаться только на кэширование.
Но самое главное - индексы базы данных просты в определении и обычно не требуют обслуживания, если вы не становитесь огромными.Кэширование otoh намного сложнее - для гема cache-money вам нужно будет установить, настроить и поддерживать memcached.Это не ракетостроение, но все же добавляет еще один уровень сложности поверх вашей базы данных.Другими словами, это обычно преждевременная оптимизация.Я рекомендую начинать с индексов БД и добавлять слой кэширования только тогда, когда вы обнаружите, что он вам действительно нужен.