Результаты запроса заслуживают кэширования, если ваше приложение, скорее всего, прочитает их из кэша, вместо того, чтобы снова выполнить запрос SQL. Или, если вам нужен результат быстрее, чем может выполнить любой запрос SQL.
Кроме того, стоимость SQL-запроса не обязательно влияет на производительность вашего приложения. SQL-запрос, такой как SELECT * FROM users WHERE id = 1
, прост и эффективен, поскольку поиск по первичному ключу может содержать не более одной строки (при условии, что id
является первичным ключом).
Сложный запрос к большим диапазонам данных может занять намного больше времени, если вы выполняете его в SQL, поэтому относительное преимущество чтения кэшированного результата будет больше.
Но даже простой запрос, выполняемый миллион раз в час, может быть дорогостоящим. Если вы выполняете запрос так часто, что он сдерживает производительность вашего приложения, кеш - это хорошая стратегия.
Есть много переменных, и они зависят от вашего поведения и ограничений вашего приложения. Никто не может ответить за вас.
- Как часто данные в базе данных изменяются, что делает кэшированную копию устаревшей?
- Насколько эффективен SQL-запрос? Это простой запрос, который все равно будет довольно быстрым, или это сложный запрос, который может занять полные секунды при запуске версии SQL?
- Может ли ваше приложение переносить время, необходимое для выполнения запроса SQL? Конечно, все приложения говорят, что хотят получить результаты «как можно быстрее», но это не измеримое требование. Является ли SQL-запрос достаточно быстрым ?
- Как часто вы запускаете запрос? В определенном масштабе вам нужно использовать незначительные оптимизации, которые не будут стоить времени на кодирование, если запрос используется нечасто.