Доброго дня,
кто-то из опытных девелоперов наверняка сталкивался, подскажите плиз куда копать.
При пагинации CPagination, чем дальше ухожу по страницам, тем дольше выполняется запрос, вот к примеру на 1000-й странице (а это далеко не последняя) время выполнения 0.72 сек, при этом на первой без оффсета всего лишь 0.0012
Запрос генерируется простой:
SELECT t.name, t.weight FROM `terms` `t` ORDER BY weight DESC LIMIT 50 OFFSET 49950
Как правильно поступить? возможно стоит выбрать и закешировать всю таблицу а потом работать с ней не обращаясь к базе, но смущает объем кешируемой информации, неужели это будет правильный вариант?
Оптимизация CPagination
Re: Оптимизация CPagination
В этом нет ничего удивительного, СУБД каждый раз отсчитывает 50000 строк, чтобы добраться до нужной. Вот интересная статья, в конце есть запрос, который вроде как заметно улучшает ситуацию: http://explainextended.com/2009/10/23/m ... w-lookups/
Re: Оптимизация CPagination
А у вас индекс по weight имеется?
Вообще время конечно может расти, все таки чем дальше по индексу, тем больше нужно пролистать страниц этого самого индекса для того чтобы найти нужное, но это должны быть всего проценты, а не сотни раз.
Вообще время конечно может расти, все таки чем дальше по индексу, тем больше нужно пролистать страниц этого самого индекса для того чтобы найти нужное, но это должны быть всего проценты, а не сотни раз.
Re: Оптимизация CPagination
По weight индекс, конечно, имеется.
Пока решила данную проблему, путем изменения условия CPagination на
В результате запрос вместо 0.72 сек выполняется за 0.01
Других вариантов пока не нашлось
Пока решила данную проблему, путем изменения условия CPagination на
Код: Выделить всё
SELECT t.id, t.name, t.weight FROM `terms` `t` WHERE(t.id>49950) ORDER BY weight DESC LIMIT 50
Других вариантов пока не нашлось
Re: Оптимизация CPagination
Я вам такой вариант хотел посоветовать, но он не всегда подходит.
Вообще то что описано по ссылке весьма забавно, если все это правда и автор статьи нигде не ошибся - это это просто мегакривизна в определении индексов мускулом. Будет время проверю это дело.
Вообще то что описано по ссылке весьма забавно, если все это правда и автор статьи нигде не ошибся - это это просто мегакривизна в определении индексов мускулом. Будет время проверю это дело.