Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : InSAn \(Panchuk Andrey\)             2:5020/400     18 Jun 2002  16:24:25
 To : Nurlan Mukhanov
 Subject : Re: DO || EXECUTE
 -------------------------------------------------------------------------------- 
 
 > есть код такого плана:
 >
 >  $std=$db1->prepare("update posts set author_id=?, author_name=? where
 > author_name=?");
 >  $sth=$db2->prepare("select distinct q.id,q.name,q.misc from members q,
 > posts w where q.misc = w.author_name");
 >  $sth->execute or &error($DBI::errstr);
 >
 >   while (@qqq = $sth->fetchrow) {
 >    $std->execute(@qqq) or &error($DBI::errstr);
 >   }
 >
 > то есть делаю prepare, а результат селекта подставляю в execute
 >
 > будет ли быстрее работать следующий код?
 >
 >  $sth=$db1->prepare("select distinct q.id,q.name,q.misc from members q,
 > posts w where q.misc = w.author_name");
 >  $sth->execute or &error($DBI::errstr);
 >
 >   while (@qqq = $sth->fetchrow) {
 >    $db2->do("update posts set author_id='$qqq[0'], author_name='$qqq[0]'
 > where author_name='$qqq[0]'");
 >   }
 >
 > то есть делать сразу do без prepare и execute
 >
 > Если так поразмыслить, то что делает do - сразу сует запрос в базу,
 >
 > ну а prepare & execute сперва джоинит переданные значение, проверят
 > количество переданных данных и необходимых данных, формирует запрос и
 
 потом
 
 > только отдает базе...
 >
 > Hо просто хочу спросить мнение.. так ли это. не ошибаюсь ли я в своих
 > предположениях.
 
 Ошибаешься!
 Если использовать $db2->do в цикле, то для каждой вставляемой (обновляемой)
 строки создается новый дескриптор команды, команда подготавливается,
 выполняется и дескриптор уничтожается.
 В первом случае разбор команды происходит один раз, а затем команда
 используется из совместно используемого хеша SQL.
 В результате - выполнение первого кода присходит значительо быстрее.
 
 - ---
 Best regards, InSAn
      http://www.PROext.com
 --- ifmail v.2.15dev5
  * Origin: PROext (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 DO || EXECUTE   Nurlan Mukhanov   18 Jun 2002 12:23:42 
 Re: DO || EXECUTE   InSAn \\(Panchuk Andrey\\)   18 Jun 2002 16:24:25 
 Re: DO || EXECUTE   Dmitry Koteroff   18 Jun 2002 19:43:16 
 Re: DO || EXECUTE   Artem Chuprina   19 Jun 2002 10:22:52 
 Re: DO || EXECUTE   Nurlan Mukhanov   20 Jun 2002 03:27:41 
Архивное /ru.perl/91042eac74e5.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional