Тормозит запрос в БД

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
Byrger
Сообщения: 33
Зарегистрирован: 2010.06.04, 17:03

Тормозит запрос в БД

Сообщение Byrger »

Привет у меня есть страница на которой выводятся данные из БД
100 записей на страницу с пролистыванием
В БД более 1млн записей, запрос идет с выборкой по параметрам (от 2х до 12 параметров(сделан поиск))

Запрос в контроллере примерно такой (скинул часть из контроллера)

Код: Выделить всё

 $count=Reports::model()->count($criteria);

        $pages=new CPagination($count);
        // элементов на страницу
        $pages->pageSize=100;
        $pages->applyLimit($criteria);
        $pages->params = $pag;
        $dataP = Reports::model()->findAll($criteria); 
Вывод просто через foreach и внизу страницы CLinkPager

Страница обрабатывается 9-15 сек, это очень медленно

Как ускорить обработку? в чем моя ошибка?
Byrger
Сообщения: 33
Зарегистрирован: 2010.06.04, 17:03

Re: Тормозит запрос в БД

Сообщение Byrger »

Нашел что при любом вызове Loading "db" application component происходит задержка в 5 секунд. Что на локальном сервере и бд на локальном
Что на рабочей серверной машине где БД так-же локально
Byrger
Сообщения: 33
Зарегистрирован: 2010.06.04, 17:03

Re: Тормозит запрос в БД

Сообщение Byrger »

Прочитал что на форуме что у человека была такая проблема и он адрес хоста в настройках коннекта к бд поменял с localhost на 127.0.0.1 И ему помогло.
Но мне не помогло =(
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Тормозит запрос в БД

Сообщение nizsheanez »

1) вытащите запросы которые происходят при Loading 'db' application component
2) Найдите какой из них тормозит
3) сделайте explain
4) выложите сюда

5) Найдите еще тормозных запросов, explain, сюда
Byrger
Сообщения: 33
Зарегистрирован: 2010.06.04, 17:03

Re: Тормозит запрос в БД

Сообщение Byrger »

Нашел запросы которые тормозят.

Как сделать explain?
Просто провести аналогичный запрос в БД с explain?
Byrger
Сообщения: 33
Зарегистрирован: 2010.06.04, 17:03

Re: Тормозит запрос в БД

Сообщение Byrger »

К примеру вот запрос который использует листалка страниц для запроса количества выводимых строк.

Код: Выделить всё

SELECT COUNT(*) FROM `reports` `t` WHERE user_id=4
Сделал explain

Код: Выделить всё

id 1
select_type SIMPLE
table t
type ALL
rows 1160409
Extra Using where
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Тормозит запрос в БД

Сообщение Nafania »

На user_id индекс сделайте. У вас скан идет.
Byrger
Сообщения: 33
Зарегистрирован: 2010.06.04, 17:03

Re: Тормозит запрос в БД

Сообщение Byrger »

Спасибо.
Время обработки сократилось до 0,3с у всей страницы
Ответить