Возможно ли оптимизировать запрос?

Вопросы и ответы по изменению функционала, смене дизайна, переносу сайта и т.п.

Модераторы: Xpycm, Koduc

Правила форума
ВНИМАНИЕ! Форум не является средством гарантированной поддержки клиентов и пользователей. Поэтому на быстрый ответ тут рассчитывать не нужно, как и на ответ вообще. Сотрудники отвечают по мере своих возможностей.

На форуме действует ограничение в 3 сообщения / сутки.
Если Вы хотите сказать "спасибо", то воспользуйтесь функцией "Повысить репутацию" - зелёная иконка "плюс" под ником ответившего.

Возможно ли оптимизировать запрос?

Сообщение vanred79 » 21 июн 2020, 22:53

Здравствуйте! В модели protected\modules\apartments\models\Apartment.php есть функция beforeDelete
Код: Выделить всё
public function beforeDelete(){        
            
$sql 'DELETE FROM {{apartment_reference}} WHERE apartment_id="'.$this->id.'"';
        
Yii::app()->db->createCommand($sql)->execute();

        
$sql 'DELETE FROM {{apartment_comments}} WHERE apartment_id="'.$this->id.'"';
        
Yii::app()->db->createCommand($sql)->execute();

        
$dir Yii::getPathOfAlias('webroot.uploads.apartments') . '/'.$this->id;
        
rrmdir($dir);

        
$sql 'DELETE FROM {{galleries}} WHERE pid="'.$this->id.'"';
        
Yii::app()->db->createCommand($sql)->execute();        
        
        
$sql 'DELETE FROM {{apartment_complain}} WHERE apartment_id="'.$this->id.'"';
        
Yii::app()->db->createCommand($sql)->execute();
        
        if (
issetModule('comparisonList')) {
            
$sql 'DELETE FROM {{comparison_list}} WHERE apartment_id="'.$this->id.'"';
            
Yii::app()->db->createCommand($sql)->execute();
        } 

Подскажите пожалуйста возможно ли оптимизировать эти запросы в БД одним SELECT-ом? Можно ли сделать один SELECT по нескольким таблицам apartment_reference, apartment_comments, apartment_complain и др., затем получив данные, используя if-ы делать запросы DELETE FROM , только при наличии записи в таблицах? Если это возможно подскажите пожалуйста, как правильно сделать запрос SELECT?
Вся недвижимость Астаны у нас на сайте
vanred79
Местная знаменитость
Местная знаменитость
 
Сообщения: 660
Зарегистрирован: 02 фев 2013, 18:42
Откуда: Казахстан
Очки репутации: 2

Re: Возможно ли оптимизировать запрос?

Сообщение Foton » 23 июн 2020, 18:50

То, что вы хотите перед delete сделать ещё и select нагрузку на БД точно не снизит, а только увеличит. Кол-во запросов только вырастет от этого.
Представьте, что вместо одного delete у вас будет один select и один delete , итого два запроса вместо одного. А если на удаление нет ничего, то будет также один запрос select. В итоге кол-во запросов только вырастет. Ну и select сам по себе подразумевает ещё и возврат данных, для хранения которых потребуется некоторый объем памяти в лучшем случае, а в худшем они вдобавок пойдут гулять по сети
Foton
Разработчик
Разработчик
 
Сообщения: 431
Зарегистрирован: 26 янв 2012, 14:58
Очки репутации: 8


Вернуться в Вопросы и помощь по изменениям

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

cron