Xpycm писал(а):Здравствуйте.
Попробуйте добавить индексы в обе таблицы для полей date_updated
Добрый день Хруст!
Индексы в полях date_updated стоят в обоих таблицах.
Я немного изменил код RandomapartmentsWidget
- Код: Выделить всё
Yii::import('application.modules.apartments.helpers.apartmentsHelper');
$dependency = new CDbCacheDependency('SELECT MAX(id) FROM {{apartment}}');
$sql = 'SELECT id FROM {{apartment}} WHERE type='.$type.' AND city_id='.$sity.' AND obj_type_id='.$tipob.' '.$num_of_rooms.' '.$price_type.' ';
$results = Yii::app()->db->cache(param('cachingTime', 1209600), $dependency)->createCommand($sql)->queryColumn();
shuffle($results);
$this->criteria = new CDbCriteria;
$this->criteria->addInCondition('t.id', array_slice($results, 0, param('module_apartments_widgetApartmentsItemsPerPageRandom', 9)));
$result = apartmentsHelper::getApartments(param('module_apartments_widgetApartmentsItemsPerPageRandom', 9), $this->usePagination, 0, $this->criteria);
if($this->count){
$result['count'] = $this->count;
}
$this->render('widgetApartments_list', $result);
где переменные после WHERE берутся из фильтра страниц page.
Все работает, но загрузка CPU 100%. show full processlist показывал, что грузит процессор процесс mysql
- Код: Выделить всё
SELECT MAX(val) FROM
(SELECT MAX(date_updated) as val FROM {{apartment}}
UNION
SELECT date_updated as val FROM {{galleries}}) as t
Как думаете, может быть это из за того, что очень много страниц page в таблице ore_menu (порядка 50 тыс.)? Или из этого, что вышестоящий код не правильно сделал?