![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Gumi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.10.2011 Репутация: нет Всего: нет |
Здравствуйте.
Погогите пожалуйста мне оптимизировать код. Оооочень медленно работает(((
sql-код работает быстро. я его проверяла с помощью sql anlyzer. |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
А можно пояснить в двух словах, что данный код пытается сделать?
-------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Gumi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.10.2011 Репутация: нет Всего: нет |
Суть в формировании таблицы показывающий количество товаров за 12 месяцев.
поэтому вот так составила алгоритм: 1. for($j=0; $j < count($maxm); $j++) перечисляю месяцы 2. для каждого месяца передаю по отдельности код товара for($i=0; $i < count($pn); $i++) 3. после соответствующих вычислении на сервере возвращается количество. вид таблицы: январь 19635 февраль 5897 март 7524 и т.д. $maxd - массив значений, содержащий последние дни каждого месяца. $maxm - массив содержащий месяцы {01..12}. $pn (mssql_bind($storeProc1,"@item",$pn[$i], SQLVARCHAR);)- массив из чисел, к-ый передается в хранимку для вычислений такого характера:
Это сообщение отредактировал(а) Gumi - 27.3.2012, 13:41 |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Сделать одним запросом не судьба?
И у вас уже сразу готовая табличка которую надо вывести. А так у вас 2 * $pn * $maxn запросов. Зачем оно такое надо? -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Evghenusi |
|
|||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: 6 Всего: 15 |
не вникая в код могу посоветовать только "изменить циклы" таким образом:
for($j=0; $j < count($maxm); $j++) => for($j=0, $count=sizeof($maxm); $j < $count; $j++) хотя прирост в скорости будет не столь значительным |
|||
|
||||
| Gumi |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.10.2011 Репутация: нет Всего: нет |
Fortop, под ваш совет не могу переделать код. выкладываю его, подскажите где указать помесячный интервал?
Это сообщение отредактировал(а) Gumi - 27.3.2012, 14:07 |
||||||
|
|||||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
У вас месяц не совпадает с календарным? Тогда да - все туго.
Я бы предложил в таком случае завести в таблице отдельное поле, где вы бы записывали номер интервала. И уже группировать по нему. А сами интервалы хранить в отдельной таблице id, date_start, date_end -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Gumi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.10.2011 Репутация: нет Всего: нет |
Да, поработаю в этом направлении.
Спасибо! |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |