Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/59: Рейтинг темы: голосов - 59, средняя оценка - 4.86
Hryv
0 / 0 / 0
Регистрация: 24.07.2008
Сообщений: 658
1

Оптимизация Работы С Тз

19.10.2011, 12:28. Просмотров 10715. Ответов 8
Метки нет (Все метки)

Есть две ТЗ с одинаковыми колонками: Товар, Цена, День, НачО, КонО, Приход, Расход

Если в ТЗ1 и в ТЗ2 есть строки с совпадающими Товар, Цена, День, то надо
ТЗ1.Приход = ТЗ1.Приход+ТЗ2.Приход;
ТЗ1.Расход = ТЗ1.Расход+ТЗ2.Расход;

а если в ТЗ2 есть строка с такими Товар, Цена, День, которых нет в ТЗ1, то в ТЗ1 надо добавить строку

Я сделал вложенный цикл, все работает правильно
Однако если делать за 10 дней, то время выполнения еще терпимое, но как правило будут делать за месяц
Через 8 минут по секундомеру я прервал отчет

замер показал, что тормозит этот цикл
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2011, 12:28
Ответы с готовыми решениями:

Оптимизация работы с ТЗ
Есть две ТЗ Они, можно сказать, связаны один-к-многим При формировании печатной формы идет...

Оптимизация работы склада
Задача такая у организации есть склад нужно оптимизировать набор товаров. Один товар может лежать...

8.3 Упр.прил. - Оптимизация работы с переменными ?
Все на клиенте: Одна процедура заполняет массив неизвестного размера, другая должна его...

Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Много много лет назад, на заре становления профессии "оптимизатора" в какой то умной книжке был...

Оптимизация работы
Есть большой файл с множеством формул массива, работа с ним довольно затруднительно. Вопрос такой,...

8
umkmowm181538
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
19.10.2011, 12:29 2
Можно код посмотреть хоть?
0
Hryv
0 / 0 / 0
Регистрация: 24.07.2008
Сообщений: 658
19.10.2011, 12:33 3
unknown181538, я специально не выкладывал
чтобы не вести ваши мысли в одном направлении
вдруг кто-то предложит радикально иной эффективный подход


кстати больше всего весит конкретно одна строка
Если (ТЗ1.Товар=ТЗ2.Товар) и (ТЗ1.Цена = ТЗ2.Цена) и (ТЗ1.День = ТЗ2.День) Тогда

за 5 дней - 15%
за 15 дней - 28% (более 3 млн. вызовов) - это уже первая строка во всем отчете
0
umkmowm181538
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
19.10.2011, 12:34 4
Идея такая:
В ТЗ1 добавить колонку "ПерваяТЗ" типа "число", заполнить ее единицей.
Перегнать данные всех строк 2-й ТЗ в первую по колонкам "Товар","День","Цена","Приход","Расход"
ТЗ1.Свернуть("Товар,День,Цена","Приход,Расход,ПерваяТЗ").
Строки, где ПерваяТЗ = 0 удалить.
0
Hryv
0 / 0 / 0
Регистрация: 24.07.2008
Сообщений: 658
19.10.2011, 12:46 5
unknown181538, или я не понял идею или она не правильная, так как я не вижу как нужные остатки из ТЗ2 попадут в ТЗ1

Но в любом случае вопрос снимается
Я решил копнуть глубже
Обе ТЗ формируются запросами
Вроде уже вижу как одним запросом сразу получить одну ТЗ со всеми нужными данными

Сейчас буду тестить
0
umkmowm181538
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
19.10.2011, 13:13 6
Цитата Сообщение от Hryv
unknown181538, или я не понял идею или она не правильная, так как я не вижу как нужные остатки из ТЗ2 попадут в ТЗ1
таак...
попробую примеры
Товар дата Приход ПерваяТЗ ТЗ2. Товар Дата Приход ПерваяТЗ
Товар1 01.01.2011 10 1 Товар1 01.01.2011 15 0
Товар1 02.01.2011 10 0

После объединения
Товар дата Приход ПерваяТЗ
Товар1 01.01.2011 10 1
Товар1 01.01.2011 15 0
Товар1 02.01.2011 10 0

ТЗ1 после свертки:
Товар дата Приход ПерваяТЗ
Товар1 01.01.2011 25 1
Товар1 02.01.2011 10 0

После удаления:
Товар дата Приход ПерваяТЗ
Товар1 01.01.2011 25 1


А... стоп.. надо подумать. Условия не четко прочитал.

Добавлено: Фразу про остатки упустил.
Но, если все записи в ТЗ2 уникальны, то в ТЗ1 добавляем колонку НачОстИзТЗ2, и в конце циклов, если ПерваяТЗ=0 не удаляем, а переписываем из вспомогательных колонок в основные.
0
Hryv
0 / 0 / 0
Регистрация: 24.07.2008
Сообщений: 658
19.10.2011, 14:31 7
Цитата Сообщение от unknown181538
Но, если все записи в ТЗ2 уникальны, то в ТЗ1 добавляем колонку НачОстИзТЗ2, и в конце циклов, если ПерваяТЗ=0 не удаляем, а переписываем из вспомогательных колонок в основные.
Похоже что так сработало бы

Возьму на заметку, но проверять уже не буду, так как замена двух запросов на один решила проблему
Теперь за месяц отрабатывает быстрее 1 минуты
0
puh14
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
19.10.2011, 14:32 8
Одним запросом вестимо лучше. А так - разсруктуры ТЗ одинаковые, сам бог велел Тз.свернуть()
0
ottyxyy
0 / 0 / 0
Регистрация: 27.04.2008
Сообщений: 371
20.10.2011, 01:25 9
В одном запросе сделать выборку двух таблиц. Сдал ать "индексное поле" Товар+Цена+День. Далее сделать объединение по этому полю с суммированием прихода и расхода.

.....
Ой.Извеняюсь. Не увидел что 7.7.
0
20.10.2011, 01:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2011, 01:25

Оптимизация работы с БД
Прошло 5 недель, как я перешёл на веб-разработку. У меня много вопросов касающихся оптимизации....

Оптимизация работы программы
Ув. господа! Всего есть два вопроса.. Первый: Как можно создать форму, набросать на нее...

Оптимизация работы сервера
Пишу серверное приложение. Нагрузка предполагается серьёзная, т.к. каждый клиент может иметь по 20...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru