Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Увеличение скорости выполнения запроса к БД MySQL 
:(
    Опции темы
Олег13
Дата 19.11.2011, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 28.6.2010

Репутация: нет
Всего: нет



  Всем добрый день! Подскажите пожалуйста возможно ли как-то сократить время выполнения запроса к БД 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">ООО &quot;Элтом&quot;</a></p>);
print qq (</BODY>);
print qq (</HTML>);

$dbh->disconnect;


PM MAIL   Вверх
sir_nuf_nuf
Дата 21.11.2011, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 2
Всего: 31



По ходу дела нет.
Perl скрипт в порядке (по сути он ничего и не делает).
Так что скорее всего проблема в БД.

давайте сюда (а лучше на форум MySQL) 
explain category;
show table status like 'category';



--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.