Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Тормоза при работе с DBF [D6, dBase, FoxPro]


Ruff ©   (2003-05-05 16:30:00) 

Ребят, у меня таблица на 20000 записей сделана одним ДБФ-ом. Во время перемещения по DBGrid-у прога ужасно тормозит. Нельзя ли от этого как-то избавиться?
База подключается из локального каталога и работает через SQLQuery.


Ruff   (2003-05-06 10:57:00) [1]


> Dred2k ©

С тобой по аське можно связаться?
Моя - 311805858


Dred2k   (2003-05-06 10:50:00) [2]


> Ruff (06.05.03 10:43)


> > А может он у тебя еще и "живой"?
> Да, это действительно сильно влияет?


Очень сильно. Вообще, живость ущербна. Используй неживой запрос, CachedUpdates и UpdateSQL. Будет нормально...


Ruff   (2003-05-06 10:43:00) [3]


> Нет обработчика события OnCalcFields?

Нет, но был OnAfterScroll, хотя я пробовал его убрать - не помогло


> А может он у тебя еще и "живой"?

Да, это действительно сильно влияет?



> Я призываю сократить объем получаемых запросом данных.

Нужно, чтобы юзерь мог перемещаться по всей таблице. Или это реализуется иначе?


> может у тебя там куча удаленных записей?

Нет, табличка нулёвая, только что сконверченная


> а еще вопрос DBGrid это именно DBGrid?

Да, все только стандартное.


Dred2k   (2003-05-05 19:18:00) [4]


> MsGuns © (05.05.03 18:49)

Работаю именно с ним. Никаких тормозов нет. Если самому, конечно, на всякие хорошие события всякого разного не написать. Народ, порой, в него по 40-50 тыщ. выбирает с сортировкой, а потом по истории всяких там прикладных вещиц последовательно по Locate лазит (так им удобнее). Правда, при Locate всякие Before...AfterScroll и все такое я на время отрубаю. Так что...


MsGuns   (2003-05-05 18:49:00) [5]

>Zacho © (05.05.03 18:32)

Opps... Похоже, я спутал с RxLib - вот там навалено столько на бедный грид (в частности на события связанного источника данных), что уши морским узлом завязываются ;))


Zacho   (2003-05-05 18:32:00) [6]


> MsGuns © (05.05.03 18:23)

Хм.. Не замечал. Может он тормозит, если включены футеры или еще какая-нибудь дребедень ?


MsGuns   (2003-05-05 18:23:00) [7]

Эхгрид тормозит однозначно.


sniknik   (2003-05-05 18:08:00) [8]

а еще вопрос DBGrid это именно DBGrid? не Ehxxxx, Xxxxx либо подобное? В какойто версии сталкивался там вся таблица(или часть от запроса) в память вкачивалась, как будто в StringGrid, за счет этого дополнительные возможности, но если памяти мало то и дополнительные тормоза.


Dred2k   (2003-05-05 17:57:00) [9]

> Johnmen © (05.05.03 17:51)
> Насколько помнится ~ 20000-30000 записей без особых проблем...

В принципе и больше. Ограничения - только винт и терпение юзера. Ну и блобы не дергать впрямую... Это личные наблюдения про БДЕ и localsql. Причем, localsql так пашет даже для IB, к примеру, если запрос гетерогенный (создает файл со всеми данными и по нему бегает). Тормоза у товарища либо от "навесок" на датасет, либо от "живости" запроса, либо.... (сейчас придумаем) ;)


Johnmen   (2003-05-05 17:51:00) [10]

>Dred2k © (05.05.03 17:46)

Вот и мне странно это. В смысле сильного торможения торможения.
Поэтому и уточнял про обратное листание...
Насколько помнится ~ 20000-30000 записей без особых проблем...


Dred2k   (2003-05-05 17:46:00) [11]


> Johnmen © (05.05.03 17:38)


> Я призываю сократить объем получаемых запросом данных.


Разумеется, это имеет значение. Но только на этапе выполнения. Товарищ через БДЕ работает, а там localsql результат во временную таблицу пихает, ничего далее не выполняя (к живым запросам не относится, по ходу). Так вот на практике навигация очень быстрая. Тут другой случай, мне думается...


sniknik   (2003-05-05 17:40:00) [12]

а если через таблицу (TTable)? не тормозит?
в смысле проверить запрос виноват или как. вообщето 20тыс плевое количество для dbf таблицы (вот 100 это уже существенно, и даже иногда смертельно).

может у тебя там куча удаленных записей? если их много может и притормозить работу.


Johnmen   (2003-05-05 17:38:00) [13]

>А сократить объем БД никак нельзя

Я не призываю сокращать объем таблицы (а не БД) !
Я призываю сократить объем получаемых запросом данных.


Dred2k   (2003-05-05 17:37:00) [14]

А может он у тебя еще и "живой"?
(RequestLive := True)?


yurikon   (2003-05-05 17:36:00) [15]

Нет обработчика события OnCalcFields?
Оно может вызываться при перемещении по Grid`у...


Ruff   (2003-05-05 17:29:00) [16]

Кстати, запрос еще сложнее, чем *. Там еще куча условий...

А сократить объем БД никак нельзя. Более того он будет только расти


Johnmen   (2003-05-05 17:19:00) [17]

Может плюнуть на разбор "почему" ?
И перестать получать невнятно большие количества ?
:)


Соловьев   (2003-05-05 17:17:00) [18]

запрос вида
select *
from table

наверное?


Ruff   (2003-05-05 17:12:00) [19]

При обратном - тоже.
Я имел ввиду TQuery, просто у него на значке SQL нацарапано ;)


Johnmen   (2003-05-05 17:00:00) [20]

Что имеется в виду под SQLQuery ?
При обратном листании тоже тормозит ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо