Страница 1 из 1

Долго работает IBQuery

Добавлено: 03 май 2006, 16:22
Zhur
Два примера:
Первый:
while ... do begin
IBQuery.SQL.Add(...);
end;
Второй:
while ... do begin
StringListL.Add(...);
end;
Первый пример (с IBQuery.SQL... впрочем это касается и IBSQL) почему-то очень долго работает. Транзакция, на которую он ссылается неактивна, правда активен IBDatabase.
Может объясните, почему так долго работает? Цикл-то ведь у меня аж пол миллиона раз повторяется.

Добавлено: 04 май 2006, 09:56
Dynamic
думается, что тормоза не в ADD(), а где-то рядом.....

Добавлено: 04 май 2006, 16:10
Zhur
Dynamic писал(а):думается, что тормоза не в ADD(), а где-то рядом.....
А причем тут ADO вообще?

Добавлено: 04 май 2006, 16:28
kdv
При чем тут ABO, LBO, MSO? буквы читай внимательно, да? :)

Добавлено: 04 май 2006, 16:44
Zhur
kdv писал(а):При чем тут ABO, LBO, MSO? буквы читай внимательно, да? :)
Извиняюсь... и вправду эт я загнул.
Так почему же так долго работает... Может IBQuery.SQL какие-нибудь свои дополнительные времязатратные штучки делает?
Главное, если поставить StringList, то цикл в 150000 раз выполняется за 3 сек, а с IBQuery.SQL за минуту только 1 процент проходит.

Добавлено: 04 май 2006, 16:56
Zhur
Можно было бы, конечно, заполнить StringList, а потом перенести данные в IBQuery.SQL... Но в идеале, хотелось бы еще в цикле каждый раз стартовать транзакцию и коммит делать.

Добавлено: 04 май 2006, 18:08
kdv
Но в идеале, хотелось бы еще в цикле каждый раз стартовать транзакцию и коммит делать.
то есть, хочется загнуть сервер?

www.ibase.ru/devinfo/impexp.htm

Добавлено: 04 май 2006, 21:15
DS
Цикл-то ведь у меня аж пол миллиона раз повторяется.
Чет я не въеду, а нафик тебе такой SQL сдался...
Что ты такое грандиозное творишь?
Мож попаду пальцем в небо... тебе запрос с параметрами не поможет?

Добавлено: 05 май 2006, 06:53
Dynamic
Zhur писал(а):
kdv писал(а):При чем тут ABO, LBO, MSO? буквы читай внимательно, да? :)
Может IBQuery.SQL какие-нибудь свои дополнительные времязатратные штучки делает?.
вроде ничего больше не делается, свойство SQL напрямую отображается на внутр.поле FSQL: TStrings;

Добавлено: 05 май 2006, 08:09
Dimitry Sibiryakov
Там, правда, есть еще обработчик FSQL.OnChange. Довольно длинный и тупой. Ох не зря я советую не пользоваться TIBQuery и TIBTable...
Но в любом случае запрос в 150тыс.строк не пройдет даже теоретически. Предельный размер запроса в IB/FB 64к.

Добавлено: 05 май 2006, 08:42
Dynamic
Dimitry Sibiryakov писал(а): Но в любом случае запрос в 150тыс.строк не пройдет даже теоретически. Предельный размер запроса в IB/FB 64к.
про запрос никто и не говорил, кажись

Добавлено: 05 май 2006, 13:36
Zhur
kdv писал(а): то есть, хочется загнуть сервер?
www.ibase.ru/devinfo/impexp.htm
Нет... тут, в общем-то третий случай - периодический импорт...
А вот DS попал таки пальцем... в точку... Скорее всего сделаю через параметры.