Форум: "Потрепаться";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];
ВнизНе знаю куда вопрос задавать, попробую здесь. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c