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

оптимизировать запрос

Добавлено: 2009-11-17 9:04:48
ProFTP
1) подскажите как оптимизировать такой запрос в один запрос?

как-то через join делают... тут http://www.sql.ru/forum/actualthread.aspx?tid=678367

Код: Выделить всё

  
    $c->model('DBI')->dbh->do(
        'DELETE from friends                              
                  WHERE id_un = ?
                  AND id_un_friends = ?   );

    $c->model('DBI')->dbh->do(
        'DELETE from friends                              
                  WHERE id_un = ?
                  AND id_un_friends = ?   );

            
            
    $c->model('DBI')->dbh->do(
        'DELETE from send_friends                              
                  WHERE id_un = ?
                  AND id_un_friends = ? );

    $c->model('DBI')->dbh->do(
        'DELETE from send_friends                              
                  WHERE id_un = ?
                  AND id_un_friends =? );
                  
                  
2) тут нужно это написать одном запросом или можно много маленьких запросов делать?

========
========

если нужно удалить несколько записей, то тут будет вот так?

Код: Выделить всё

    $c->model('DBI')->dbh->do(
        'DELETE from friends AS t1,
                            send_friends AS t2
                                                          
                  WHERE ( t1.id_un = ' . $c->user->{user}->{id} .'
                  AND t1.id_un_friends = '. $id_un.'
                  ) OR (
                  t1.id_un = ' . $id_un  .'
                  AND t1.id_un_friends = '. $c->user->{user}->{id}.'
                  )
                  OR                  
                  ( t2.id_un = ' . $c->user->{user}->{id} .'
                  AND t2.id_un_friends = '. $id_un.'
                  ) 
                  OR 
                  (
                  t2.id_un = ' . $id_un  .'
                  AND t2.id_un_friends = '. $c->user->{user}->{id}.'
                  }' );
это правильно?


НО, вопрос, если в этих 2 таблицах нужно удалить несколько элементов с оператором OR правильно?


UPD:
этот запрос не работает, вопрос остается, как оптимизировать? подскажите пожалуйста

была ошибка:

Код: Выделить всё

delete_friend "DBD::mysql::db do failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE ( t1.id_un = 33
                  AND t1.id_un_friends = 1
                  ) OR (
  ' at line 4 at

Re: оптимизировать запрос

Добавлено: 2009-11-17 11:28:19
zg
ProFTP писал(а):как-то через join делают... тут http://www.sql.ru/forum/actualthread.aspx?tid=678367
зачем читать всякий бред, если есть нормальный мануал? :smile: http://dev.mysql.com/doc/refman/5.1/en/delete.html
ProFTP писал(а):тут нужно это написать одном запросом или можно много маленьких запросов делать?
мм тут две пары одинаковых запросов, что и как хочешь оптимизировать?

Re: оптимизировать запрос

Добавлено: 2009-11-17 20:48:29
ProFTP
zg писал(а):мм тут две пары одинаковых запросов, что и как хочешь оптимизировать?
ну 4 запроса которые которые можно написать в один запрос, правильно?

можно писать в один запрос? или делать много маленьких запросов?

(в некотрых случаях было 8 маленьких запросов) нужо писат ьв один запрос или можно много маленьких?

Re: оптимизировать запрос

Добавлено: 2009-11-18 5:40:35
zg
ProFTP писал(а):нужо писат ьв один запрос или можно много маленьких?
для муси пофиг, а так ориентруйся на логику, чтобы скрипт было легко понимать и, если что, не мучаться вопросом - почему данные удалились?