|
|
ru.website- RU.WEBSITE ------------------------------------------------------------------- From : Dmitry Olyenyov 2:5020/400 21 Jun 2001 12:31:42 To : Dmitry Ban Subject : Re: Литература по PHP -------------------------------------------------------------------------------- Привет, Dmitry! >>>>> "DB" == Dmitry Ban пишет: SS> Ты проиграешь в скорости. Причем возможно на порядки. SS> for (my $param ...) { SS> $sth=$dbh->prepare("select * from table where id='$param'"); DB> Чтобы пpоигpать в скоpости хотя бы на поpядок, нужно, чтобы стpока запpоса DB> генеpилась на два поpядка медленнее, чем выполнение запpоса базой + DB> последующая обpаботка pезультата :> DB> Соppи, я тут поссоpился с аpифметикой. Hе на два поpядка, конечно. Hужно, DB> чтобы генеpация стpоки запpоса тpебовала пpимеpно столько же вpемени, что и DB> обpаботка запpоса базой. Hо ведь в пpиpоде такого не встpечается? Чтобы не быть голословным стоит таки провести тесты В этом тесте в цикле вызывался Statement s = c.createStatement(); ResultSet rs = s.executeQuery("select classified from currency where codeisoalph = 'KZT' "); и читалась одна строчка. C:\Dema\developing\java>java DBTestNonPreparable 1000 select executed in 8080 ms А в этом, перед циклом вызывался PreparedStatement s = c.prepareStatement("select classified from currency where codeisoalph =? "); а в цикле: s.setString(1, "KZT"); ResultSet rs = s.executeQuery(); rs.next(); rs.close(); C:\Dema\developing\java>java DBTestPreparable Statement prepared in 140 ms 1000 selects executed in 3555 ms А это он же запущеный второй раз: C:\Dema\developing\java>java DBTestPreparable Statement prepared in 60 ms 1000 selects executed in 3795 ms Как видно - prepared select взялся из кеша. Да, база Oracle 8.0.5 драйвер oracle thin DB> А отсутствие prepare есть благо. Я могу написать что-нибудь типа: DB> $sqls = "INSERT INTO SubSent (sender, subject, body, sendto, dtime, DB> agent, host, via, forward) DB> VALUES ('$PHP_AUTH_USER', '$subj', '$body', '$sendto', NOW(), DB> '$agent', '$host', '$via', '$forward')"; DB> в любом месте, где захочу. Захочу -- вообще в инклуд засуну. И я _никогда_ DB> не запутаюсь, в каком поpядке надо скаpмливать аpгументы prepare. С этим согласен, немного неудобно. -- С уважением, Дмитрий. Kак это интересно: сечь запорожцев. --- ifmail v.2.15dev5 * Origin: An IBB InterNetNews site (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.website/1012679e8931e.html, оценка из 5, голосов 10
|