![]() |
|
|
![]()
|
|
| Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 1 Всего: 6 |
Вот общий вид проблемной части кода:
var ost:double; begin while not ADOQuery.eof do begin ADOQuery.edit; ost:="блабла и прочие вычисления" ADOQuery.fields[1].asfloat=ost; ADOQuery.next; end; end; Изза кол-ва строк в запросе порядка 500 тысяч данная весч выполняется ОЧЕНЬ долго...что я делаю неправильно и как оптимизировать изменение данных в таблице?Возможная замена ADOQuery на ADOTable но получается тоже самое.Помогите,ветераны программирования БД!Спасибо за уделенное время. -------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
| Burka |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.5.2007 Репутация: 1 Всего: 2 |
Я пихал вычисления в события AdoTable(Query), там перебор строк идет гораздо быстрее. Тока событие надо подобрать. Например OnCalcFields
или что нить такое, где автоматически перебираются все строки таблицы. --- Еще, кстати, перебор идет быстрее когда таблицу не видно(но это помогает когда делаешь твоим способом). То есть там время больше тратится на перерисовку, чем на перебор. Это сообщение отредактировал(а) Burka - 29.6.2007, 17:09 -------------------- Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей. |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
А вместо перебора почему запросом сразу нельзя внести инфу? Или я чего-то не понимаю?
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
В вычислениях участвуют только данных из таблицы или как то еще считается?
Вообще самый быстрый способ использовать SQL:
-------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
| Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 1 Всего: 6 |
to all:
Чтобы было понятнее,опишу еще более подробно: Есть таблица DEAL в которой есть все поля из данного запроса. Однако сам он формируется из других таблиц.Мне надо его результаты обработать: ost:=ost-ADOQuery.fields[1]+ADOQuery.fields[2]+ADOQuery.fields[3]; ADOQuery.fields[4]=ost; после чего сохраняю эти данные в DEAL и сдвигаюсь вниз в ADOQuery и в DEAL(таблицы различаются только тем,что в DEAL нет запросных и расчетных данных,а по ключу и кол-ву строк все совпадает).Соответственно приходится одновременно работать с запросом на 500тыщ строк и таблицей на теже 500 тыщ строк =( to Vas,Данкинг: Как тут вставить апдейт я не представляю,мне же надо сдвигаться по строкам.И что,делать еще один ADOQuery,которому с каждым сдвигом менять параметры? to Burka: вычисления мне,Как видишь,надо делать по данным запроса.Как мне их запихнуть в ADOT?Поясни,Если не сложно,подробнее. Если уберу отображение таблицы,все равно очень долго,я бы даже сказал,что мало что меняется... -------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |