Страница 1 из 1

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

СообщениеДобавлено: 21 июн 2020, 22:53
vanred79
Здравствуйте! В модели 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?

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

СообщениеДобавлено: 23 июн 2020, 18:50
Foton
То, что вы хотите перед delete сделать ещё и select нагрузку на БД точно не снизит, а только увеличит. Кол-во запросов только вырастет от этого.
Представьте, что вместо одного delete у вас будет один select и один delete , итого два запроса вместо одного. А если на удаление нет ничего, то будет также один запрос select. В итоге кол-во запросов только вырастет. Ну и select сам по себе подразумевает ещё и возврат данных, для хранения которых потребуется некоторый объем памяти в лучшем случае, а в худшем они вдобавок пойдут гулять по сети