|
FireBird + Delphi максимально ускорить выборку из Dataset-a
|
|||
---|---|---|---|
#18+
FB2.5 + Delphi 2007 (FibPlus 7). Юзер запускает по горячей клавише форму куда сканирует несколько кодов построчно и нажимает кнопку "Применить коды", после чего на другой форме должны заполняться строки чека, согласно отсканированным кодам. Кодов немного как правило - от 1 до 10, очень редко больше Задача состоит в том чтобы максимально ускорить добавление строк в чек. Инфа из БД выбирается из нескольких таблиц во View. Для ускорения хотел сделать так - выборка из view в FibDataset начинается заранее, когда юзер только запустил по горячей клавише форму и еще даже не начал сканировать. Чтобы к момент окончания сканирования FibDataset уже был готов (порядка 5 тыс. записей). Потом надо выбрать из 5 тыс. записей всего в среднем 5 записей, коды которых юзер отсканил в Memo на форме. Хотел сделать locate по FibDataset, но пока фейл: https://www.sql.ru/forum/1333723/fibplus-ne-v-sostoyanii-sdelat-locate-po-simvolno-cifrovomu-polu Какой бы теперь вариант мне выбрать чтобы достичь максимальной скорости: 1. Делать insert кодов из Memo в маленькую табличку (предварительно очищая ее), потом делать inner join или merge с view (где вся необходимая инфа - название, производитель и прочие овер 10 полей) по коду. 2. Отбирать из view с параметром Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
3. Каким-то образом попытаться все таки решить вопрос c locate по заранее приготовленному FibDataset-у 4. Еще варианты № 3 мне кажется должен быть быстрее, так как поиск все таки идет по заранее сформированному набору значений. № 1 и 2 плохи тем что выполняются уже ПОСЛЕ сканирования, то есть теряется драгоценное время. Может еще какие варианты есть для ускорения, подскажите. Есть еще мысль если № 3 не прокатит, ускорить № 1 или 2 за счет создания отдельной таблицы, которая предварительно будет заполняться из view - вроде как выборка из таблицы идет быстрее чем из view, особенно если сделать индекс по коду? Но все равно как-то что-то не то. Из 5 тыс. записей нужно выбрать всего-то 5-10 как правило. И время теряется дофига чтобы обработать строки в memo. а потом обработать получившийся dataset. Может как-то можно избавить от цикла for для обработки строк Memo и сразу считывать все его содержимое в BLOB и в уже в запросе как то парсить? В общем подскажите пожалуйста, как бы вы решили такую задачу оптимально ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2021, 10:01 |
|
FireBird + Delphi максимально ускорить выборку из Dataset-a
|
|||
---|---|---|---|
#18+
арт2010, какой у вас опыт разработки если не секрет? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2021, 11:24 |
|
FireBird + Delphi максимально ускорить выборку из Dataset-a
|
|||
---|---|---|---|
#18+
Вопросы снимаются, вариант № 3 сработал ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2021, 13:15 |
|
FireBird + Delphi максимально ускорить выборку из Dataset-a
|
|||
---|---|---|---|
#18+
арт2010как бы вы решили такую задачу оптимально Я бы выкинул "нескольких таблиц во View". Для задачи, как она поставлена, это не нужно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2021, 13:54 |
|
FireBird + Delphi максимально ускорить выборку из Dataset-a
|
|||
---|---|---|---|
#18+
Выборка "от 1 до 10" записей безо всяких датасетов обычно выполняется быстрее, чем система успеет отрисовать закрытие окошка с кодами. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2021, 15:40 |
|
FireBird + Delphi максимально ускорить выборку из Dataset-a
|
|||
---|---|---|---|
#18+
WildSery, круто конечно. Только как вот интересно параметры мгновенно попадут из Memo базу в качестве параметров запроса? Потом опять таки результат запроса надо обработать и визуализировать (у меня VST используется, а не гриды). Я не знаю может есть конечно технология как считывать напрямую в базу безо всяких memo? Либо как-то максимально это ускорить. Но пока не представляю как мне бы удалось конкретно в моем случае реализовать авторВыборка "от 1 до 10" записей безо всяких датасетов обычно выполняется быстрее, чем система успеет отрисовать закрытие окошка с кодами ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2021, 17:16 |
|
FireBird + Delphi максимально ускорить выборку из Dataset-a
|
|||
---|---|---|---|
#18+
арт2010Но пока не представляю как мне бы удалось конкретно в моем случае реализовать Время нанять программиста. Или начать читать статьи на ibase.ru. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2021, 17:57 |
|
FireBird + Delphi максимально ускорить выборку из Dataset-a
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Да и так работает, я же написал. Просто интересно что за нано технологии у WildSery которые делают выборку и выводят результат, пока ещё не успела закрыться форма для считывания кодов ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2021, 18:11 |
|
FireBird + Delphi максимально ускорить выборку из Dataset-a
|
|||
---|---|---|---|
#18+
арт2010 и визуализировать (у меня VST используется, а не гриды Тем более датасет нафик не нужен. Пустую строку с новым кодом можешь показать сразу, а значимые поля записи показать, когда они будут получены, хоть в параллельной нити. Объемы данных у тебя мизерные, непонятно вообще цель оптимизаций. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2021, 18:22 |
|
FireBird + Delphi максимально ускорить выборку из Dataset-a
|
|||
---|---|---|---|
#18+
арт2010 что за нано технологии у WildSery которые делают выборку При закрытии формы для считывания ты уже знаешь, сколько позиций, эту инфу тупо передаешь своему VST, сразу же появляется нужное количество ветвей. В событии OnGetText ячейки дерева тупо обращаешься к подготовленному запросу компонента TpFIBQuery, передавая в качестве параметра код, соответствующий ветке дерева. Считанное значение кладешь в кэш, чтобы в следующий раз в OnGetText не лезть снова в базу. Можно не по одной записи считывать, а скопом, передав список кодов. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2021, 18:30 |
|
FireBird + Delphi максимально ускорить выборку из Dataset-a
|
|||
---|---|---|---|
#18+
Вообще, сие дельфийская тема, не фаербёрдная. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2021, 18:31 |
|
FireBird + Delphi максимально ускорить выборку из Dataset-a
|
|||
---|---|---|---|
#18+
арт2010 Просто интересно что за нано технологии у WildSery которые делают выборку и выводят результат, пока ещё не успела закрыться форма для считывания кодов ... но если за десять дён, одному не справиться, тут помощник нужен (ц) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2021, 18:31 |
|
|
start [/forum/topic.php?fid=40&fpage=8&tid=1560111]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 178ms |
0 / 0 |