Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Добрый день. Подскажите как можно увеличить скорость работы скрипта. Например как вместо 4 запросов использовать один?

$enterres = sqlsrv_query($conn, "WITH MAINQUERY AS(SELECT *,ROW_NUMBER() OVER (ORDER BY name ASC) 
AS 'RowNumber' FROM Price) SELECT * FROM MAINQUERY WHERE RowNumber BETWEEN 0 AND 20");
//var_dump($conn, $entersql);
if( $enterres === false)
{
     echo "Error in query enterres preparation/execution.\n";
    // die( print_r(sqlsrv_errors(), true));
}
while($i = sqlsrv_fetch_array($enterres, SQLSRV_FETCH_ASSOC))
{

if($inputby=='id_price'&&$typeby=='DESC'){$a--;}else{$a++;}

$id_price=($i['id_price']!='')? $i['id_price']:'0';

$name=($i['name']!='')? $i['name']:$i['name_original'];


$id_city=($i['id_city']!='')? $i['id_city']:'0';

 $sql_id_city = "SELECT * FROM City WHERE id_city='$id_city'";
$get_id_city = sqlsrv_query($conn, $sql_id_city);
if( $get_id_city === false)
{
     echo "Error in query get_id_firm preparation/execution.\n";
    // die( print_r(sqlsrv_errors(), true));
}
$info_id_city = sqlsrv_fetch_array($get_id_city, SQLSRV_FETCH_ASSOC); 
$name_city=$info_id_city['name']; 
 
 
$id_producer_country=($i['id_producer_country']!='')? $i['id_producer_country']:'0';

$sql_id_producer_country = "SELECT * FROM Producer_country WHERE id_producer_country='$id_producer_country'";
$get_id_producer_country = sqlsrv_query($conn, $sql_id_producer_country);
if( $get_id_producer_country === false)
{
     echo "Error in query get_id_producer_country preparation/execution.\n";
    // die( print_r(sqlsrv_errors(), true));
}
$info_producer_country = sqlsrv_fetch_array($get_id_producer_country, SQLSRV_FETCH_ASSOC);
$name_producer_country=$info_producer_country['name']; 



$id_firm=($i['id_firm']!='')? $i['id_firm']:'0';

 $sql_id_firm = "SELECT * FROM Firm WHERE id_firm='$id_firm'";
$get_id_firm = sqlsrv_query($conn, $sql_id_firm);
if( $get_id_firm === false)
{
     echo "Error in query get_id_firm preparation/execution.\n";
    // die( print_r(sqlsrv_errors(), true));
}
$info_film = sqlsrv_fetch_array($get_id_firm, SQLSRV_FETCH_ASSOC);
$name_firm=$info_film['name'];
$phone_firm=$info_film['phone']; 

$id_price=($i['id_price']!='')? $i['id_price']:'0';

 $sql_id_cost = "SELECT * FROM Cost WHERE id_price='$id_price'";
$get_id_cost = sqlsrv_query($conn, $sql_id_cost);
if($get_id_cost === false)
{
     echo "Error in query get_id_firm preparation/execution.\n";
    // die( print_r(sqlsrv_errors(), true));
}
$info_cost = sqlsrv_fetch_array($get_id_cost, SQLSRV_FETCH_ASSOC);
$cost=$info_cost['cost'];
$id_currency=$info_cost['id_currency'];
$id_sale=$info_cost['id_sale'];
if($id_sale=='1'){$opt=$cost;$rozn='';}
elseif($id_sale=='2'){$opt='';$rozn=$cost;} 


$t2='<table>
      <tr>
	    <td>'.$a.'</td>
        <td>'.$name.'</td>
        <td>'.$name_producer_country.'</td>
        <td>'.$opt.'</td>
        <td>'.$rozn.'</td>
		<td>'.$name_city.'</td>
        <td>'.$name_firm.'</td>
        <td>'.$phone_firm.'</td>
      </tr></table>';
      

}
7 дек 12, 11:01    [13592598]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17423
INNER JOIN?
7 дек 12, 11:03    [13592620]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Amateur7,

для начала показать скрипт который нужно улучшить, а не этот программный бред.
7 дек 12, 11:09    [13592658]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
а как правильно прописать?
7 дек 12, 11:09    [13592659]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 20362
+ просите только используемые поля, а не select *, может там 100500+ полей )))
7 дек 12, 11:09    [13592663]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
да и вот ето
($conn, "WITH MAINQUERY AS(SELECT *,ROW_NUMBER() OVER (ORDER BY name ASC) 
AS 'RowNumber' FROM Price) SELECT * FROM MAINQUERY WHERE RowNumber BETWEEN 0 AND 20");

ето всего лиш top 20 +ORDER BY name ASC
7 дек 12, 11:09    [13592664]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
WarAnt этот программный бред и нужно учлучшить).
P.S.: и не совсем бред, просто опыта мало еще..
7 дек 12, 11:10    [13592671]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Maxx я понимаю это но как быть дальше с постраничной нумерацией?
7 дек 12, 11:14    [13592702]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 20362
Amateur7
этот программный бред и нужно учлучшить)

это принципиально не улучшить.
покуда нижние запросы работают по результатам верхнего - надо создавать вьюху над верхним и сразу её селектить.
7 дек 12, 11:14    [13592703]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Сергей Васкецов можно подробнее, не улавливаю смысл слов
7 дек 12, 11:14    [13592711]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Amateur7,

ну явно не строить ее в таком виде (темболее сначала нумеруя таблицу,апатом читая тока первые 20 строк)
Вообще какова задача - что в конце конуов хотите получить то ?
7 дек 12, 11:16    [13592725]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
нужно вывести из базы данных данные в одну таблицу с постраничной нумерацией и все..
7 дек 12, 11:19    [13592745]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 20362
Amateur7
не улавливаю смысл слов

каких именно?
7 дек 12, 11:19    [13592746]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Amateur7
нужно вывести из базы данных данные в одну таблицу с постраничной нумерацией и все..

А причем тут тогда ваш код на php ?
7 дек 12, 11:21    [13592768]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Amateur7,

у вас 3 запроса ,для етого
Вам намекают,что сие делаеться 1 запросом,но пока вы не расскажите как и из каких таблиц должны прийти данные и как таблицы связанны - ниче не поучиться. С телепатией в пятницу с утра плохо савсем дела обстоят
7 дек 12, 11:22    [13592779]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
как бы вывод на страницу идет на страницу php...
7 дек 12, 11:23    [13592785]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Maxx 1 минуту сейчас посмотрю детали
7 дек 12, 11:23    [13592792]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Amateur7
как бы вывод на страницу идет на страницу php...

И причем тут форум по MSSQL, если вам надо оптимизировать php код ?
7 дек 12, 11:26    [13592808]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Структура и связи таблиц показаны на рисунке
Картинка с другого сайта.

Нужно вывести :
1) name из price
2) name из Producer goods
3) name из Currently
4) cost из cost
5) name и phone из Firm(Firm и Price связаны по id_firm)
7 дек 12, 11:33    [13592879]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
смысл в том, как оптимизировать запрос для MSSQL, а потом его уже можно будет использовать в коде.
7 дек 12, 11:35    [13592887]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Amateur7
Нужно вывести :
1) name из price
2) name из Producer goods
3) name из Currently
4) cost из cost
5) name и phone из Firm(Firm и Price связаны по id_firm)

Используйте JOIN-ы для соединения нескольких таблиц в одном запросе
7 дек 12, 11:35    [13592890]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Amateur7
смысл в том, как оптимизировать запрос для MSSQL, а потом его уже можно будет использовать в коде.

В вашем коде 5 разных SQL запросов
Что вы понимаете под "оптимизировать запрос для MSSQL" ?
7 дек 12, 11:36    [13592902]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Amateur7
1) name из price
2) name из Producer goods
3) name из Currently
4) cost из cost
5) name и phone из Firm(Firm и Price связаны по id_firm)


как связаны
price , Producer goods,Currently,cost между собой ?
7 дек 12, 11:37    [13592914]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Maxx
Amateur7
1) name из price
2) name из Producer goods
3) name из Currently
4) cost из cost
5) name и phone из Firm(Firm и Price связаны по id_firm)


как связаны
price , Producer goods,Currently,cost между собой ?


price и Producer goods по id_producer_goods

price и Cost по id_cost

Cost и Currently по id_currentcy
7 дек 12, 11:41    [13592951]     Ответить | Цитировать Сообщить модератору
 Re: Как уменьшить нагрузку и увеличить скорость работы скрипта?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Amateur7,тогда где-то так

select
    [FirmName] = f..name
   ,f.phone
   ,[Producer goods name] = pg.name
   ,[Cost name] = cs.name
   ,[CurrencyName] = cr.name
   ,cs.cost
from Firm f
  inner join  Price  p on f.id_firm = p.id_firm
  inner join [Producer goods] pg on p.id_producer_goods = pg.id_producer_goods
  inner join Cost cs on p.id_cost = cs.id_cost
  inner join Currently  cr on cr.id_currentcy  = cs.id_currentcy 
7 дек 12, 11:55    [13593105]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить