Я должен не соглашаться с zerkms. Просто потому, что у MySQL есть система кэширования (на самом деле она имеет несколько), не означает, что нет никакой пользы для оптимизации доступа к базе данных. В MySQL Query Cache велик, но он все еще имеет ограничения:
- это не подходит для больших наборов данных
- запросы должны быть идентичны (посимвольно)
- он не поддерживает подготовленные заявления или запросы, используя пользовательские функции, временные таблицы или таблицы с привилегиями на уровне столбцов
- результаты кеша удаляются каждый раз, когда таблица изменяется, независимо от того, влияет ли результат на результат
- , если он не находится на том же компьютере, что и Интернет сервер по-прежнему не отвечает служебные данные сети
Даже с удаленным сервером, Memcached is roughly 23% faster than MQC. И используя кеш объектов APC, вы можете получить 990% -ное улучшение по сравнению с использованием только MQC.
Таким образом, существует множество причин для кэширования наборов результатов базы данных вне кэша запросов MySQL. В конце концов, вы кэшируете данные результата локально в переменной PHP, когда вам нужно получить к ней несколько раз в том же скрипте. Итак, почему бы вам не расширить это на несколько запросов, если набор результатов не изменился?
И только потому, что сервер достаточно быстр, это не значит, что вы не должны стремиться писать эффективный код. Не так много усилий, чтобы кэшировать результаты базы данных —, особенно когда такие ускорители, как APC и Memcached, были предназначены для этой цели. (И я не стал бы отклонять этот вопрос как таковую «странную идею», когда some of the largest sites on the internet use Memcached in conjunction with MySQL.)
Это говорит о том, что нулевые значения верны, поскольку сначала вы должны получить результаты, затем вы можете кэшировать данные с помощью APC или Memcached , Однако есть еще один вариант кэширования результатов запроса вручную, который должен использовать Mysqlnd query result cache plugin. Это клиентский кеш MySQL-запросов.
Плагин кэша результатов запроса Mysqlnd позволяет прозрачно кэшировать ваши запросы с использованием APC, Memcached, sqlite или заданного пользователем источника данных. Однако этот плагин в настоящее время имеет те же ограничения, что и MQC, в том, что подготовленные операторы не могут быть кэшированы.
Ресурс не может кэшировать, результаты запроса ... ** ДА ** – ajreal