SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 25.09.2011 17:15:26

Александр Трофимов
Завсегдатай
Откуда: Юрмала
Зарегистрирован: 19.09.2011
Сообщений: 95

Принудительное кеширование запроса

У меня есть скрипт поиска товаров, который выдает только 40 найденных товаров.
При скроллинге вниз страницы, к этим 40 добавляются еще 40 и так до 200. Каждый раз отрабатывает, сколько я понимаю, один и тот же запрос на все найденные товары, а потом отбирает по лимиту нужные.

Вопрос: как можно закешировать результат запроса с LIMIT 0,200 (или пускай даже все до 35000), а потом уже из кешированного результата выгребать LIMIT 0,40, LIMIT 40,40 и т.д.? Может кто-то знает решение?

Неактивен

 

#2 25.09.2011 17:31:23

Александр Трофимов
Завсегдатай
Откуда: Юрмала
Зарегистрирован: 19.09.2011
Сообщений: 95

Re: Принудительное кеширование запроса

И вообще, как узнать размер самого тяжелого размера, чтобы выставить query_cache_limit в максимум?

Неактивен

 

#3 25.09.2011 18:33:09

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Принудительное кеширование запроса

Кэш запросов кэширует запросы буквально, то есть если изменилась одна буква, то запрос уже другой. Можно сделать свой механизм кэширования с использованием временных таблиц, как, например, в конце статьи http://webew.ru/articles/1041.webew

Неактивен

 

#4 25.09.2011 21:37:59

Александр Трофимов
Завсегдатай
Откуда: Юрмала
Зарегистрирован: 19.09.2011
Сообщений: 95

Re: Принудительное кеширование запроса

Слишком много временных таблиц получится — для каждого поискового запроса.
Я так понял, для улучшения кеширования, надо добиться того, чтобы в таблицы, по которым происходит запрос ничего не писалось.

Неактивен

 

#5 25.09.2011 21:41:47

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Принудительное кеширование запроса

Если идет запись в таблицу, то кэш запросов и буфер индексов сбрасываются. Но кэш запросов работать не будет, если запросы разные - LIMIT 0,40 и LIMIT 20,20

Неактивен

 

#6 26.09.2011 00:34:30

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Принудительное кеширование запроса

Кажется, можно выбирать какое-то большое количество строк в запросе
(например, 60), а потом отсеивать данные со стороны клиента. Тогда Вы
будете эффективно использовать query cache. При небольшом количестве
столбцов может получиться неплохо. Ну а для особо глубоко копающих
товарищей (т.е. далее 3 страницы) уже делать отдельными запросами —
они глубоко копают, они и подождут.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson