powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Что быстрее?
17 сообщений из 67, страница 3 из 3
Что быстрее?
    #39410116
Фотография Exteris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это
Код: pascal
1.
2.
3.
4.
5.
if (length(TInDBF.FieldByName('SM1').AsString)=0)
                       or(TInDBF.FieldByName('SM1').AsString=' ')
                      then fbQOld.ParamByName('sm1').Value:=0
                      else fbQOld.ParamByName('sm1').Value:=
                                  (TInDBF.FieldByName('SM1').AsFloat);


можно поменять на
Код: pascal
1.
fbQOld.ParamByName('sm1').Value:=StrtoFloatDef(TInDBF.FieldByName('SM1').AsString,0);



Еще полям и параметрам можно обращаться не по имени, а по индексу. Будет немного быстрее.
...
Рейтинг: 0 / 0
Что быстрее?
    #39410243
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exteris,

если знаешь тип параметра, никогда не пиши .Value:=...
если непонятно, почему этого не надо делать - почитай source\rtl\variants.pas и varutils.pas.
...
Рейтинг: 0 / 0
Что быстрее?
    #39410327
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvесли знаешь тип параметра, никогда не пиши .Value:=...
если непонятно, почему этого не надо делать - почитай source\rtl\variants.pas и varutils.pas.

Не актуально это уже давно :)
Сколь-нибудь существенную разницу можно увидеть только в очень примитивных синтетических тестах типа "присваиваем варианту значение переменной типа integer 100.000.000 раз".
...
Рейтинг: 0 / 0
Что быстрее?
    #39410328
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, кто откликнулся.
Сделал как советовали: избавился от скриптов полностью. Вместо них использую Query. Так как обработку веду сам, можно сказать монопольно, и по совету kdv, удаляю индекс, чищу таблицу, вставляю записи, создаю индекс.
Удалось достичь скорости 7мин.34сек.

Можно еще на несколько секунд ускориться если в промежуточных таблицах тоже играться с индексами, но думаю прирост будет не существенный. Там записей 70 000 максимум.

Еще раз всем спасибо. Кое-что почерпнул для себя на будущее.
...
Рейтинг: 0 / 0
Что быстрее?
    #39410349
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushпо совету kdv, удаляю индекс
я про индексы ничего не говорил.
...
Рейтинг: 0 / 0
Что быстрее?
    #39410380
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvakrushпо совету kdv, удаляю индекс
я про индексы ничего не говорил.
говорил-говорил.
http://www.ibase.ru/idxmgm/
написано:
Примечание КД. Увы, это не так – alter index inactive существенно медленнее, чем drop index. В этом можно убедиться, прочитав статью по проблемам удаления большого количества записей).

если КД - это не Кузьменко Дмитрий, тогда не говорил.
Правда статью не читал, оставил в закладках для прочтания.
...
Рейтинг: 0 / 0
Что быстрее?
    #39410384
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushПравда статью не читал, оставил в закладках для прочтания.
Статью надо читать и вникать, и не только эту.
А закладки делать на мозге.
...
Рейтинг: 0 / 0
Что быстрее?
    #39410395
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIneakrushПравда статью не читал, оставил в закладках для прочтания.
Статью надо читать и вникать, и не только эту.
А закладки делать на мозге.
я имел ввиду статью про удаление
...
Рейтинг: 0 / 0
Что быстрее?
    #39410400
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushя имел ввиду статью про удаление
А я про то, что с начала надо учить теорию и матчасть.
То есть весь IBASE от корки до корки.
...
Рейтинг: 0 / 0
Что быстрее?
    #39410504
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Примечание КД. Увы, это не так – alter index inactive существенно
> медленнее, чем drop index. В этом можно убедиться

Интересно, это ещё актуально?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что быстрее?
    #39410520
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам> Примечание КД. Увы, это не так – alter index inactive существенно
> медленнее, чем drop index. В этом можно убедиться

Интересно, это ещё актуально?Я вообще не понимаю, о чём речь.
...
Рейтинг: 0 / 0
Что быстрее?
    #39410529
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushПримечание КД. Увы, это не так – alter index inactive существенно медленнее, чем drop index. В этом можно убедиться, прочитав статью по проблемам удаления большого количества записей).
я х.з. откуда взялось это примечание. технически alter index inactive и drop index в отношении содержимого индекса ничем не отличается - содержимое тупо удаляется.
Сколько там ключей было в индексе - должно быть абсолютно по барабану.

У парня когда-то на InterBase 5.6 alter index inactive шло 6 минут, на базе в 1.5 гиг. Прямо сейчас я сделал alter index inactive на базе в 30 гиг, на таблице с 3 млн записей (600 мб данных), и индекс размером 14мб деактивировался за 0.5 секунды на ФБ 3.0.
Активировался обратно этот индекс за 7 секунд. Так что коммент тот я из статьи удалил нахрен.
...
Рейтинг: 0 / 0
Что быстрее?
    #39410542
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad> Я вообще не понимаю, о чём речь.

Ну что "alter index inactive существенно медленнее,
чем drop index" или что inactive + active существенно
медленнее, чем drop + create. Как-то не верится...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что быстрее?
    #39410547
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще попробовать ускориться отказавшись от .FieldByName и .ParamByName заменив их на соответственно .Fields[i] и .Params[i].
На миллионах записей это может дать ощутимый эффект.
Сейчас может что изменилось, но когда-то давно *ByName искало тупо перебором.
Даже если оно ищет по индексу то все равно прямое указание номера поля будет быстрее.
...
Рейтинг: 0 / 0
Что быстрее?
    #39410555
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks,


В fib+ хоть раз использованные имена кэшируются в отсортированных TStringList, соответственно, при повторном обращении ищутся шустро.

Но и при последовательном переборе (в ibx, например) даже для миллионов записей сколько-нибудь заметный выигрыш получишь лишь при определенных условиях.
В данном случае (при последовательной записи данных) - не получишь, совсем. Тем более, учитывая озвученные ТС условия.
...
Рейтинг: 0 / 0
Что быстрее?
    #39410847
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksНа миллионах записей это может дать ощутимый эффект.
Он многократно перекроется тормозами от ProcessMessages, вызов которого, как утверждает
мой ХШ, аффтар так и не выкинул.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что быстрее?
    #39410961
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Не выкинул, но перенес вызов вместе с комитом, т.е. каждые 50000 записей.
...
Рейтинг: 0 / 0
17 сообщений из 67, страница 3 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Что быстрее?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]