@eugeneledenev

Как сделать чтобы большой запрос начал кешироваться SQL сервером?

На локалке запрос кешируется, а на рабочем сайте нет, причем мелкие запросы кешируются отлично.
Запрос большой, думаю где-то маленькие значения стоят или вообще не стоят.
Какие настройки в my.cnf на это влияют?

SELECT count(*) as total, attribute_id, text FROM 
(SELECT DISTINCT p.product_id, p2a.attribute_id, p2a.text, p.price as realprice 
FROM oc_product p 
LEFT JOIN oc_manufacturer m ON(m.manufacturer_id=p.manufacturer_id) 
LEFT JOIN oc_product_to_category p2c ON (p2c.product_id=p.product_id) 
LEFT JOIN oc_category_path cp ON(cp.category_id=p2c.category_id) 
LEFT JOIN oc_product_attribute_id p2a ON (p2a.product_id=p.product_id) 
WHERE 1 AND p.status = '1') 
as innertable WHERE 1 GROUP BY attribute_id, text
  • Вопрос задан
  • 185 просмотров
Пригласить эксперта
Ответы на вопрос 1
Smithson
@Smithson
20+ лет админю
show variables like 'query_cache%';
За размер кеша отвечает query_cache_size.
set @@global.query_cache_size=64*1024*1024;
отдает под кеш всего 64 Мб.
Кеш должен быть меньше доступного ОЗУ и вообще не больше свободной памяти (то есть той памяти, которую ОС отдаст без напряга).
Поиграйте этими значениями, посмотрите.
Но если у вас результат запроса больше ОЗУ - то кеш вам не поможет ;)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы