Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Внизкак быстро открыть БД из 130000 зап с небольшой потерей памяти Найти похожие ветки
← →
Yerbol © (2005-02-04 14:01) [0]Я открываю базу данных Access через ADO и отображаю их в DBGrid.
База моя большая быстро не открывается да и памяти жрет моного на простых компах не работает :). Задача моя такая открыть базу все целиком а по кусочкам их не устраивает :(
Подскажите как можно открыть эту базу без больших потерь памяти и чтоб как можно быстрее (а то у меня она открывается более 1 минут :(
Или есть какой нить компанент типа True DBGrid Pro 6.0 в Visual Basic 6
← →
Соловьев © (2005-02-04 14:05) [1]
> как быстро открыть БД из 130000 зап
И ты их 130 000 записей просмотришь?
Делаешь обычный запрос и не фитчиш все записи. И будет летать.
← →
msguns © (2005-02-04 14:51) [2]>Соловьев © (04.02.05 14:05) [1]
>И ты их 130 000 записей просмотришь?
Ну у него монитор с диагональю километр, а смотреть будет из вертолета ;)
← →
Соловьев © (2005-02-04 15:03) [3]тогда с того вертолета и прыгнуть надо 8)
← →
Desdechado © (2005-02-04 15:10) [4]> по кусочкам их не устраивает
Типичная безголовая юзеркая гигантомания: "Хочу, как хозяин, обозреть свои владения, а уж потом буду думать, что мне нужно выбрать и нужно ли вообще".
А нормальный подход - наоборот. Сформулировать, что надо, а потом уже искать.
← →
Плохиш © (2005-02-04 15:11) [5]
>Yerbol © (04.02.05 14:01)
>Задача моя такая открыть базу все целиком а по кусочкам их не устраивает
Юзер - всегда прав. Хочет, пусть ждёт, тратится на новую технику...
← →
Sergey13 © (2005-02-04 15:11) [6]2[3] Соловьев © (04.02.05 15:03)
Так на моник упадет и разбьет, а он дорогой наверное - жалко. 8-)
← →
Соловьев © (2005-02-04 15:14) [7]
> Юзер - всегда прав. Хочет, пусть ждёт, тратится на новую
> технику...
И программисты часто пользуется этим. Рисуют толстых пре ТОЛСТЫХ клиентов :)
← →
Соловьев © (2005-02-04 15:15) [8]
> Так на моник упадет и разбьет, а он дорогой наверное - жалко.
> 8-)
8) главное чтобы не ушибся.
← →
Виталий Панасенко (2005-02-04 15:17) [9]я в АДО не очень.. Может курсор надо на сервере открыть а не на клиенте ?. .я так думаю долго потому что все тянет на клиента..
← →
Sergey13 © (2005-02-04 15:19) [10]2 [8] Соловьев © (04.02.05 15:15)
Тебе узера жалко, а мне монитор. Наверное я не прав. Но монитор уж очень пондравился - километр диагональ. Вот бы на таком в HL2. 8-)
← →
Johnmen © (2005-02-04 15:22) [11]Виталий Панасенко (04.02.05 15:17) [9]
На каком сервере ?
← →
Danilka © (2005-02-04 15:26) [12][9] Виталий Панасенко (04.02.05 15:17)
Это Аццесс, какой там сервер, думаю, не поможет. :)
Хотя, кто его знает, Yerbol, если хочешь продолжать пляски с извращениями попробуй измени у ADOConnection свойство CursorLocation.
← →
msguns © (2005-02-04 15:27) [13]>Sergey13 © (04.02.05 15:19) [10]
>Тебе узера жалко, а мне монитор. Наверное я не прав. Но монитор уж очень пондравился - километр диагональ. Вот бы на таком в HL2. 8-)
А психика ? Ты ж, Сергунь, у нас впечатлительный. Представляешь, выходишь из-за угла, помахивая двухверстовым узи, а на тебя монстер прыгает с небоскреб, а ? Лучше бегай на свом 17-ти дубовом..
← →
Danilka © (2005-02-04 15:29) [14][11] Johnmen © (04.02.05 15:22)
Ну, вобщем-то да, но все-таки одно дело вытащить в кэш 20 записей из таблицы, а другое 130к.
Хотя, конечно, когда долистают до конца то память будет забита точно также.
← →
Виталий Панасенко (2005-02-04 15:29) [15]Johnmen © (04.02.05 15:22) [11]
Там еще и TableDirect значение имеет... Вообще-то странно, что sniknik не откликнулся - это ж его стихия.. :-)
← →
Sergey13 © (2005-02-04 15:34) [16]2[13] msguns © (04.02.05 15:27)
>А психика ? Ты ж, Сергунь, у нас впечатлительный
Это где написано? 8-)
>Представляешь, выходишь из-за угла, помахивая двухверстовым узи, а на тебя монстер прыгает с небоскреб, а ?
Так я ж на вертолете. 8-)
← →
Johnmen © (2005-02-04 15:36) [17]>Danilka © (04.02.05 15:29) [14]
>Виталий Панасенко (04.02.05 15:29) [15]
Конечно, память будет забита. Но можно однонаправленный датасет. Тогда кеш всего на 1 запись, но никакой двусторонней навигации, никаких дбгридов...:)
А второй вопрос - скорость. Скачать 130000 - это время.Не зависимо от направленности...
← →
Danilka © (2005-02-04 15:53) [18][17] Johnmen © (04.02.05 15:36)
Не, автору грид как-раз нужен, поэтому однонаправленый не катит. :)
Просто, незнаю как в аццессе, но возможно если поставить серверный курсор, то он не все сразу в кэш затолкает, а только то, что в гриде, и пихать в кэш будет по-мере листания, то-есть на первоначальное открытие удет меньше чем в случае с клиентским курсором - 1 минута.
Хотя, все равно, на мой взгляд, вываливать запрос на сотни тысяч записей в грид - извращение. :)
Наверняка, можно сделать какую-нибудь первоначальную группировку, например слева в лист-бокс вывливать клиентов, улицы, еще что, а в самом запросе вываливающем все в грид, фильтровать по выбранному значению.
если это документы, то еще проще, две даты задающие период и по-умолчанию период день или месяц хотя-бы.
← →
Виталий Панасенко (2005-02-04 16:15) [19]Знаете, не поленился.. Создал БД с одной таблицей 128000 записей.. Открываю ADODataSetом (select * from T1) - доли секунды..
таблица T1
F1 - счетчик
F2 - строка 50
F3 - строка 50
F4 - длинное целое..
У dataSetа курсор на сервере... все работает "мухой".. перемещение и тд ..:-)
← →
Danilka © (2005-02-04 16:19) [20][19] Виталий Панасенко (04.02.05 16:15)
В конец грида уходил? :))
← →
Виталий Панасенко (2005-02-04 16:20) [21]Ебстебственно !:-) Самое первое, что пробовал..
← →
Danilka © (2005-02-04 16:24) [22][21] Виталий Панасенко (04.02.05 16:20)
Ну, тогда, либо у тебя комп/памяти побольше чем у автора, либо у него полей не один десяток. :))
По-идее, отжираемая память после ухода в конец грида должна быть такая-же как и при клиентском курсоре..
Или есть варианты?
← →
Johnmen © (2005-02-04 16:25) [23]>Виталий Панасенко (04.02.05 16:15) [19]
>Создал БД
Аксесную ?
← →
Stanislav © (2005-02-04 16:26) [24]А что ты в этой таблице храниш ? Какие данные.
Зачем сразу 130000 ?
← →
Виталий Панасенко (2005-02-04 16:36) [25]Johnmen © (04.02.05 16:25) [23]
Конечно Access...
памяти - 256 (видео-интегрированное), Celeron 1.7, OS - XP SP2
Неужели все такие ленивые ?:-).. сами попробуйте - увидите ...
← →
Johnmen © (2005-02-04 16:42) [26]>Виталий Панасенко (04.02.05 16:36) [25]
Аксеса нет у меня. А вручную гоношиться лень...:)
И потом, ты же делал всё в рамках одного комп., локально. А по сети гонять такие НД, как правильно сказали, чистый изврат...
← →
Виталий Панасенко (2005-02-04 17:15) [27]Положил, проверил.. 100 мБ сетка - при первом открытии пауза, заметная на глаз.. потом - нет различия, что на локали, что на сети.. одинаково.. на глаз, по крайней мере не видно..:-)
← →
Johnmen © (2005-02-04 17:18) [28]>при первом открытии пауза,
Вот тут всё и закачалось на клиента. А дальше просто работа с этими локальными данными...
← →
sniknik © (2005-02-04 17:26) [29]> Там еще и TableDirect значение имеет... Вообще-то странно, что sniknik не откликнулся - это ж его стихия.. :-)
имеет, посмотри хелп по seek от adodataset в дельфях (там оптимальные параметры для аксесс серверного курсора приводятся(в примечаниях, как и пояснение что кроме jet-а нет аналогов), как раз такие что jet будет напрямую с базой работать локально, не перегоняя данные через ядро фактически эмулируя сервер)
но для клиент серверных технологий это увы не пройдет... исключительно на локали так можно.
работать тоже надо иногда... ;о))
← →
Виталий Панасенко (2005-02-04 17:39) [30]Johnmen © (04.02.05 17:18) [28]
вряд ли ... я в коде делаю
Tbl.Close;
Tbl.Open;
в обработчике кнопки Открыть... т.е. НД закрывается...
Блин.. надо с 1000000 записей загнать...:-) чем сейчас и займусь... :-)..
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.034 c