![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 48
|
![]()
Есть часть кода:
Код:
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
![]()
Хотелось бы понять какой смысл вложен в этот кусок кода, если значения переменных mat_costone и matprod в каждой итерации заменяются, но не используются.
И что дальше? |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 29.09.2011
Сообщений: 116
|
![]()
по вопросу оптимизации: если возможно менять структуру таблиц базы то я бы предложил изменить тип полей, которые вы считываете из IBQuery2, на integer и numeric. таим образом можно избавится от Trim и StrToInt/StrToFloat. Прийдется добавить проверку значений при внесении их в базу, но при большом количестве записей уменьшится время на их считывание обработку. но, по идее, при внесении этих значений в базу вы и так должны делать проверку на соответствие формата.
а если касаться запроса с параметрами то не видя самого запроса, не зная структуру базы нельзя ничего оптимизировать. по приведенному коду не понять логики выборок. тут я согласен с Прик. |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 48
|
![]()
Прик, из этого куска кода мне необходимо итоговое значение переменной matprod после завершения цикла.
Dush, спасибо за совет, но программа значительно тормозит именно на запросе (Open). Ниже текст запроса. Код:
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 19,042
|
![]()
Тяжело разобраться не имея понятия о структуре задействованных таблиц и связи между ними, но смею предположить, что данный расчет можно попытаться выполнить на уровне запроса. Кидайте сюда структуры таблиц и внятное описание того, что нужно сделать, возможно и получится. А то как вы в цикле выполняете обращение к базе при всех ухищрениях будет очень тормозить. Не забудьте упомянуть какая СУБД. Хотя вижу, Интербейс
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 27.10.2011 в 00:48. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 04.10.2007
Сообщений: 106
|
![]()
Ускорить можно:
- использовать метод IBQuery.Prepare - создать индекс по полям к которым относятся параметры
Все не так плохо, как вам кажется, на самом деле все гораздо хуже.
http://delphiworld.narod.ru/dw.html - 5000 статей!!! удобный поиск, оффлайн сборник, рекомендую всем |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
![]()
Думается, еще быстрее будет, если переделать эти расчеты в запрос, отправить его выполняться на сервер СУБД и получить от него то самое нужное единственное значение.
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 48
|
![]()
Спасибо за советы. Сейчас попробую описать более подробно.
Код:
Surgeon, я попытался использовать Prepare, но скорость не изменилась. Как правильно его использовать? |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 19,042
|
![]()
Вариант1. Загнать данные из xml в базу и попытаться одним запросом решить.
Вариант2. Вытащить один раз нужную инфу из базы, пусть даже ее очень много и с избытком, но не делать запросы в цикле
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 48
|
![]()
Аватар, спасибо за советы, но все мои попытки решить одним запросом и вынести его за пределы цикла не дали результатов (всмысле нереально в данном случае это сделать на мой взгляд). И одним запросом не удается вытащить нужную инфу, т.к. меняются параметры.
|
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запрос с параметрами | us4us | SQL, базы данных | 1 | 20.05.2011 05:53 |
программа с типизированными параметрами-значениями и параметрами-переменными | Kira09 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 20.12.2010 22:23 |
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) | Машуля | SQL, базы данных | 4 | 06.05.2010 21:09 |
Запрос с изменяющимися параметрами | GenniY | БД в Delphi | 10 | 18.03.2010 14:41 |