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

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

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

Непрочитанное сообщение ProFTP » 2009-11-17 9:04:48

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
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

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

Непрочитанное сообщение zg » 2009-11-17 11:28:19

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

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

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

Непрочитанное сообщение ProFTP » 2009-11-17 20:48:29

zg писал(а):мм тут две пары одинаковых запросов, что и как хочешь оптимизировать?
ну 4 запроса которые которые можно написать в один запрос, правильно?

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

(в некотрых случаях было 8 маленьких запросов) нужо писат ьв один запрос или можно много маленьких?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

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

Непрочитанное сообщение zg » 2009-11-18 5:40:35

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