Я использую zend paginator для получения записей и их же перечисления.Zend paginator работает очень медленно 1.12
Есть четыре соединения, и я проиндексировал все соответствующие поля, и я получаю только обязательные поля для перечисления во всех таблицах. Общее количество записей может быть 5 миллионов прибл. Я попытался оптимизировать максимальный и последний, я нашел, что этот ниже код лучше.
$select = new Zend_Paginator_Adapter_DbSelect($select);
$select->count($select);
$paginator = new Zend_Paginator($select);
Но даже с этим, это занимает больше, чем 40sec для загрузки страницы. Может кто-то помочь мне в повышении производительности.
Я расскажу немного о своем вопросе. ниже мой код
$query = $this->select();
$query->setIntegrityCheck(false);
$query->from(array('test1' => '*')))
->join(array('test2' => 'test2'), 'test2.id = test1.test2_id', array('*'))
->joinLeft(array('test3' => 'test3'), ("test1.test2_id = test3.test2_id'"), array('*')
->joinLeft(array('test4' => 'test4'), "test1.test4_id = test4.test4_id", array('*'))
->join(array('test5' => 'test5'), 'test1.test5_id = test5.id', array('*'));
$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbTableSelect($query));
$paginator->setItemCountPerPage(ITEM_PER_PAGE);
$paginator->setCurrentPageNumber($this->getRequest()->getParam('page', 1));
$paginator->setPageRange(PAGE_RANGE);
$this->view->paginator = $paginator;
План выполнения был бы приятным (используйте EXPLAIN перед запросом). Затем проверьте, что занимает так долго - запрошенный запрос или запрос подсчета. BTW -> count не принимает параметры и не требуется. – Volvox
Выполнение запроса счетчика ** 24 сек. ** для выполнения. FYI, MySQL ** Отправка данных ** занимает 30 секунд для получения 2,5 миллионов записей. –