dan-leech
@dan-leech
Программист-фрилансер

Почему тормозит SQL запрос в Yii 1.1.17 в сотни раз по сравнению с прямым?

запрос:
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:
5b4d4146931845c5b09047c8b7ab1bb5.jpg
MySQL выполняет его за 0.088s = 88.0 ms
тут и закралась ошибка.
88.0 ms это запрос на EXPLAIN в базе, а не сам запрос.
Сам запрос выполняется примерно за тоже время.
Основная статья расходов: Sending data 1.7279970s 93.697%
Но все равно это что-то очень много.
Получается только кешированием ускорять...
Может я еще что-то пропустил?

Большинство запросов выполняются сопоставимо с прямыми, остальные портят все.

Как ускорить работу Yii?
Ответ: с Yii все отлично, ищите проблему в другом месте.
В данном случае база не кешировала некоторые запросы, все ускорилось путем настройки базы.
  • Вопрос задан
  • 267 просмотров
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
потому что yii результаты должен замэпить на сущности. Хоть он и делает это быстро, но с учетом left outer join и количеством рядов...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы