Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.06;
Скачать: CL | DM;

Вниз

Не знаю куда вопрос задавать, попробую здесь.   Найти похожие ветки 

 
savva ©   (2002-03-28 10:11) [0]

бЯда такого плана - при работе с ADO (Access)была замечена такая неприятная вещь: весь (судя по размеру используемой памяти) набор данных загоняется в память, и если на таблице в 10 000 записей это еще терпимо, то при открытии таблицы в 300 000 записей этот процесс занимает весьма и весьма длительное время.
Внимание, а теперь вопрос :))
Это как нибудь лечится?
Использую TADOQuery...


 
Sergey13 ©   (2002-03-28 11:02) [1]

А зачем тебе, если не секрет, такой набор данных в 300 000 записей. Что ты с ним делаешь. Случайно не в грид засовываешь? При таком подходе

select * from здоровая_таблица

какой угодно сервак на какой угодно сетке завалить можно.
Я своим коллегам-подчиненным по башке даю за запрос, возвращающий больше 1000 записей. Ибо не фиг.
Лечится эта болезнь обычно изменением логики приложения.


 
savva ©   (2002-03-28 11:30) [2]


> Sergey13 © (28.03.02 11:02)
> А зачем тебе, если не секрет, такой набор данных в 300 000
> записей.

надо реализовать инкрементный поиск а записей начинающихся с цифры 1 - довольно много, причем большая часть...

Кстати, если использовать TADOTable то путем комбинирования свойств эта неприятная ситуация исправляется... но не хочу я эту компоненту :)))


 
Sergey13 ©   (2002-03-28 11:53) [3]

А что то типа

select * from здоровая_таблица
where pole like "1%"

не пробовал. Для аксеса не знаю, но для оракула проходит.


 
wicked ©   (2002-03-28 12:02) [4]

2 savva ©
удивляешь ты меня, чес говоря... :)
проблема решается несколькими путями:
1. Изменением свойства CursorLocation в clUseServer... плюсы: на порядок большая загрузка... минусы: бОльшая часть работы переходит на ole db провайдера, что не есть всегда гуд, например, перестаёт работать такае вещь как Sort, Filter и Locate ужасно тормозят...
2. Использованием асинхронных выборок, см. свойство ExecuteOptions... плюсы: всё чин-чинарём, программа не тормозит, а вежливо показывает градусник типа "сколько-там-еще-до-конца-загрузки"... минусы: надо играться со связкой TADOQuery-TDataSource по причине выскакисающих AV (если попросишь, обьясню, а еще лучше, поспрашивай Delirium"а ;)...
вроде всё....


 
savva ©   (2002-03-28 12:55) [5]


> wicked © (28.03.02 12:02)
> Изменением свойства CursorLocation в clUseServer...

Менял, (именно это я и имел ввиду говоря "путем комбинирования свойств" :))), но для TADOQuery этот фокус не прошел до тех пор, пока я выставил свойство ExecuteOptions ... и как было обещано - появились AV.. причину я их еще не понял...
Если не трудно - объясни почему и как :)), можно здесь или на мыло (в анкете) или по аське (там же)...
Спасибо за уже оказанную помощь...

> Sergey13 © (28.03.02 11:53)
> А что то типа
>
> select * from здоровая_таблица
> where pole like "1%"

не катит, так как все равно набор данных будет не малым... Да и вроде все налаживаться начало :)) Спасибо за то, что не был я оставлен без внимания...


 
drpass ©   (2002-03-28 13:26) [6]

А стоит ли использовать Access да еще и через ADO - далеко не самый быстрый интерфейс - с таблицами, размер которых достигает 300000 записей? IMHO, совершенно не стоит. Для этого есть совсем другой класс СУБД, та же Interbase, например.


 
savva ©   (2002-03-28 13:34) [7]


> drpass © (28.03.02 13:26)

я сним раньше работал, да и отказываться не собирался... просто есть несколько моментов, почему я остановился на Acces"е:
1. BDE не подходит сами знаете почему :))
2. InterBase тоже не сильно подходит, потому как стоять это все будет на одной машине, а она не отличается высокой производительностью, да и к тому же в состав дистрибутива его надо включать (а это +10-15 Мб) и чтоб поставть его скорее всего меня будут дергать - а оно мне надо?? А Access у большинства машин уже есть...


 
drpass ©   (2002-03-28 13:53) [8]

В общем-то да, вот только системные требования Interbase гораздо меньше, чем у Access, а производительность выше. И еще, учти, что твоя программа сможет работать только на Win98SE и старше. Иначе с ней придется таскать инсталляцию ADO 7MB размером.


 
wicked ©   (2002-03-28 13:56) [9]

2 savva © (28.03.02 12:55)
при использовании асинхронных опций AV выскакивают от того, что на момент открытия набора данных TDataSource обращается за данными к COM-обьекту recordset (через TADOQuery/TADODataSet), которого в то время еще не существует...
выход в том, чтоб в design time не привязывать TDataSource к TADOQuery, а делать это во время выполнения - в обработчике события OnFetchComplete... можно попробовать привязывать его при первом вызове обработчика OnFetchProgress, хотя я так не пробовал...


 
wicked ©   (2002-03-28 13:58) [10]

2 drpass ©

> Иначе с ней придется таскать инсталляцию ADO 7MB размером

чисто замечание - ADO проще ставить...
хотя не спорю - jet must die.... :))


 
savva ©   (2002-03-28 14:25) [11]

> wicked © (28.03.02 13:56)
Спасибо большое за помощь!

Считаю вопрос исчерпанным :)) Ветку можно закрыть со спокойной душой...



Страницы: 1 вся ветка

Текущий архив: 2002.05.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
6-17665
Yr2
2002-02-16 20:47
2002.05.06
NMHTTP.Post - как передать большой бинарный файл?


4-17749
chielo
2002-03-04 14:52
2002.05.06
Как програмно открыть CD


3-17468
Johnmen
2002-04-11 11:05
2002.05.06
Оперативная перерисовка DBGrid а


1-17586
Egor111
2002-04-22 15:50
2002.05.06
TList


14-17689
LLong
2002-03-29 19:49
2002.05.06
Delphi Code Completion versus ICQ EMail :)