Всем добрый день! Подскажите пожалуйста возможно ли как-то сократить время выполнения запроса к БД MySql? Есть скрипт, который формирует запрос к БД и по его результатам формирует HTML страничку.Скрипт и запрос работают корректно, но медленно. В БД чуть более 9000 записей, после запуска, страница формируется секунд 15-20, что не очень комфортно. Для наглядности, ниже, привожу полный текст скрипта: | Код | #!/usr/bin/perl -T
use strict; use DBI; use CGI; use CGI qw (:standart); use CGI qw(:cgi); use CGI::Carp qw(fatalsToBrowser);
my $group=param('gr'); my $search=param('st'); if ($group eq "- - -"){ $group=""};
my $data; my $dbh=DBI->connect("DBI:mysql:elt", "root", "1234567890") or die "Error: $DBI::errstr\n"; my $sth=$dbh->do("SET NAMES 'cp1251'"); my $sql="select * from price where category like ? and name like ? order by name "; my $sth=$dbh->prepare($sql); $sth->execute($group."%",$search."%");
print "Content-type: text/html\n\n"; print <<HTML; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Результаты поиска</title> <script type="text/javascript"> <!-- function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); //--> </script> <style type="text/css"> \@media screen and (min-width: 1030px) { body{ width: 999px; } } \@media screen and (min-width: 1160px) { body{ width: 1152px; } } \@media screen and (min-width: 1200px) { body{ width: 1255px; } } \@media screen and (min-width: 1350px) { body{ width: 1255px; margin-left:20px; } }
\@media screen and (min-width: 1420px) { body{ width: 1255px; margin-left:95px; } }
\@media screen and (min-width: 1600px) { body{ width: 1255px; margin-left:210px; } } \@media screen and (min-width: 1900px) { body{ width: 1255px; margin-left:360px; } }
</style> </head>
<body> <div align="center"><img src="http://elt:6080/img/banner.jpg" alt="Banner" width="1264" height="202" /> <hr align="center" /> </div> <blockquote> <blockquote> <p align="left"><a href="http://elt:6080/assortment.html">Назад к поиску</a></p> </blockquote> </blockquote> <table width="90%" border="1" align="center"> <tr> <td><div align="center"><strong>Фото</strong></div></td> <td><div align="center"><strong>Категория</strong></div></td> <td><div align="center"><strong>Наименование</strong></div></td> <td><div align="center"><strong>Корпус</strong></div></td> <td><div align="center"><strong>Производитель</strong></div></td> <td><div align="center"><strong>Цена</strong></div></td> <td><div align="center"><strong>Описание</strong></div></td> </tr> HTML my $itog=0; while ($data=$sth->fetchrow_hashref) { print qq (<TR>\n); if ($data->{"image"} ne "") { print qq (<TD><img src="$data->{"image"}" width="50" height="50"></TD>\n)} else {print qq (<TD></TD>\n);} print qq (<TD>$data->{"category"}</TD>\n); print qq (<TD>$data->{"name"}</TD>\n); print qq (<TD>$data->{"body"}</TD>\n); print qq (<TD>$data->{"producer"}</TD>\n); print qq (<TD>$data->{"price"}</TD>\n); print qq (<TD>$data->{"description"}</TD>\n); print qq (</TR>\n); $itog++; } print qq (</TABLE>); print qq (<p></p>); print qq (<blockquote>); print qq (<blockquote>); print qq (<div align="right"><strong>Всего наименований: $itog шт.</strong></div>); print qq (</blockquote>); print qq (</blockquote>); print qq (<p></p>); print qq (<p align="center"><a href="mailto:elt\@kuz.net">ООО "Элтом"</a></p>); print qq (</BODY>); print qq (</HTML>);
$dbh->disconnect;
|
|