|
|
|
посоветуйте нормальный драйер для работы с DBF файлами
|
|||
|---|---|---|---|
|
#18+
программа работает с огромным файлом (>2млн. записей) проблема в том что запросы выполняются невероятно долго проверял некоторые драйвера на относительно небольшом файлике (около 100тыс. записей) простым запросом "SELECT * FROM test_tb WHERE field1>100;" результат: ODBC (вроде как стандартный драйвер) - время: 14 - 15 сек. Microsoft.Jet.OLEDB.4.0 - время: 12 - 13 сек. VisualFoxProOLEDB driver - время: 4.5 - 5 сек. BDE - 12.5 сек., (но над сказать иногда приятно радует и некоторые запросы выполняет быстрее предыдущего) PS: такие результаты пол-ны на машине:AMDathlon 1000, 256mbRAM; вообщем такие тормоза не приемлимы(+ у некоторых пользователей машины послабее будут), посоветуйте пожалуйста нормальный дравер для dbf файлов как ещё можно оптимизировать работу с такими огромными файлами? (советы разбить на несколько мелких не предлагать) PSS: пишу на Borland'e6м использую для проверки исп-л АДО; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 12:47 |
|
||
|
посоветуйте нормальный драйер для работы с DBF файлами
|
|||
|---|---|---|---|
|
#18+
Научиться использовать современные СУБД вроде Firebird? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 12:49 |
|
||
|
посоветуйте нормальный драйер для работы с DBF файлами
|
|||
|---|---|---|---|
|
#18+
а как насчет индексов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 12:56 |
|
||
|
посоветуйте нормальный драйер для работы с DBF файлами
|
|||
|---|---|---|---|
|
#18+
немогу использовать индексы в запросах, они(индексы) есть, но созданы в foxPro2.0, и как их использовать не представляю тока компоненты TTable могут это вытворять, а мне нужно выполнять запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 13:14 |
|
||
|
посоветуйте нормальный драйер для работы с DBF файлами
|
|||
|---|---|---|---|
|
#18+
zloyGamerнемогу использовать индексы в запросах, они(индексы) есть, но созданы в foxPro2.0, и как их использовать не представляю тока компоненты TTable могут это вытворять, а мне нужно выполнять запросы. перенеси все в СУБД или хотябы пересоздай этот файл с индексами которые поддерживаются (или чего там нужно, я DBF не использую, поэтому не в курсе) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 13:52 |
|
||
|
посоветуйте нормальный драйер для работы с DBF файлами
|
|||
|---|---|---|---|
|
#18+
another-anonymousНаучиться использовать современные СУБД вроде Firebird? barrabasперенеси все в СУБД переносить все в СУБД нельзя т.к. основная работа(о которой я пока ничего не знаю) с данными идет в другой программе(которую я тоже не знаю), все что есть это данные в DBF формате, из которых иногда нужно составить отчеты. каждый раз перебрасывать данные из DBF в СУБД для нескольких отчетов, очень сомнительная идея. barrabasпересоздай этот файл с индексами которые поддерживаются не знаю как создать индекс, и не знаю как его использовать ведь только в компоненте TTable в билдере - можно явно его указать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 14:17 |
|
||
|
посоветуйте нормальный драйер для работы с DBF файлами
|
|||
|---|---|---|---|
|
#18+
zloyGamerкаждый раз перебрасывать данные из DBF в СУБД для нескольких отчетов, очень сомнительная идея. Вовсе не сомнительная. У меня несколько лет так базы жили. Филиалы работали в старой программе, присылали ежевечерне свои гигабайтные dbf, за ночь мой робот загонял их в СУБД. Днем офисный персонал делал отчеты на основе СУБД. Все жило просто замечательно. zloyGamerне знаю как создать индекс, и не знаю как его использовать ведь только в компоненте TTable в билдере - можно явно его указать.Пиши на FoxPro. Или копируй данные в СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 17:55 |
|
||
|
посоветуйте нормальный драйер для работы с DBF файлами
|
|||
|---|---|---|---|
|
#18+
Судя по результатам тестов, запрос выполняется в среднем 12-13 секунд. Возможно всё это время пожирает fullscan таблицы. Я-бы посоветовал немножко изменить постановку. Если из 2 млн записей выбирается небольшой процент записей (до 7%) то можно индексировать и выполнить поиск стандартными средствами. Если их гораздо больше, то лучше создать некую иллюзию секционирования или разделения таблицы на подтаблицы. Как вариант, во время формирования DBF-ника генерить две таблицы. Одну - полную, вторую по предикату WHERE field1>100. Можно использовать особенности физической организации DBF-ника. Тоесть при выгрузке сделать ORDER BY field1 и получить монотонную таблицу. Парсить её надо будет низкоуровневыми библиотеками с условием выхода из цикла. Резкое повышение производительности на драйвере FoxPro я не могу объяснить. Возможно тут действует какой-то хитрый индекс. Ну в этом случае вы можете его смело брать и не парится сравнением с другими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2008, 01:27 |
|
||
|
посоветуйте нормальный драйер для работы с DBF файлами
|
|||
|---|---|---|---|
|
#18+
mayton Резкое повышение производительности на драйвере FoxPro я не могу объяснить. Возможно тут действует какой-то хитрый индекс. Ну в этом случае вы можете его смело брать и не парится сравнением с другими. Rushmore ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2008, 10:14 |
|
||
|
посоветуйте нормальный драйер для работы с DBF файлами
|
|||
|---|---|---|---|
|
#18+
ГыRushmore Ага. Верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2008, 11:00 |
|
||
|
посоветуйте нормальный драйер для работы с DBF файлами
|
|||
|---|---|---|---|
|
#18+
Если критична скорость, то придется разработать проект в Фоксе. Я думаю, для пользователей внешний вид приложения практически не изменится. А уж Рашмор-оптимизация для DBF в ФоксПро тебе поможет... Вот только с запросами там (при оптимизации) есть ограничения. Если же так делать нет ни возможности, ни желания - то только перегонять базы в другой формат. Впрочем, как известно, standalone-приложение на Borland'e для работы с БД - не лучший по эффективности вариант... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 01:01 |
|
||
|
посоветуйте нормальный драйер для работы с DBF файлами
|
|||
|---|---|---|---|
|
#18+
zloyGamer another-anonymousНаучиться использовать современные СУБД вроде Firebird? barrabasперенеси все в СУБД переносить все в СУБД нельзя т.к. основная работа(о которой я пока ничего не знаю) с данными идет в другой программе(которую я тоже не знаю), все что есть это данные в DBF формате, из которых иногда нужно составить отчеты. каждый раз перебрасывать данные из DBF в СУБД для нескольких отчетов, очень сомнительная идея. barrabasпересоздай этот файл с индексами которые поддерживаются не знаю как создать индекс, и не знаю как его использовать ведь только в компоненте TTable в билдере - можно явно его указать. Проблема почти аналогична, мучаюсь давно, выход так и нет:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 15:04 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=139&tid=1345127]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 217ms |
| total: | 377ms |

| 0 / 0 |
