запрос:
Yii::app()->getDb()->CreateCommand('
SELECT
COUNT(DISTINCT `t`.`user_id`)
FROM
`tbl_profile_profile` `t`
LEFT OUTER JOIN `tbl_user_user` `user` ON (`t`.`user_id` = `user`.`id`)
WHERE
(
(
t.`type` = 0
AND (`user`.access_level <= 2)
)
AND (t.`status` = 2)
)'
)->execute();
использую Yupe 9.3 и Yii 1.1.17
в таблице 200 000 записей
Yii Debugger показывает время 1882.7 ms - 2177.2 ms
explain:
MySQL выполняет его за 0.088s = 88.0 ms
тут и закралась ошибка.
88.0 ms это запрос на EXPLAIN в базе, а не сам запрос.
Сам запрос выполняется примерно за тоже время.
Основная статья расходов: Sending data 1.7279970s 93.697%
Но все равно это что-то очень много.
Получается только кешированием ускорять...
Может я еще что-то пропустил?
Большинство запросов выполняются сопоставимо с прямыми, остальные портят все.
Как ускорить работу Yii?
Ответ: с Yii все отлично, ищите проблему в другом месте.
В данном случае база не кешировала некоторые запросы, все ускорилось путем настройки базы.