Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];

Вниз

ADO + DBF = ужасно медленно   Найти похожие ветки 

 
Praco   (2003-10-08 15:52) [0]

Раньше работал через BDE и все было неплохо. Пришлось в силу ряда причин перейти на ADO. Формат DBF: 3+
ConnectionString:
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="CollatingSequence=ASCII;DBQ=C:\TEMP\RESEXPORT;DefaultDir=C:\TEMP\RESEXPORT;Deleted=1;Driver={Driver do Microsoft dBase (*.dbf)};DriverId=21;Exclusive=1;FIL=dBase III;FILEDSN=C:\Program Files\Common Files\ODBC\Data Sources\dBASE Files (not sharable).dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=600;SafeTransactions=0;Statistics=0;Threads=3;UID=admin;UserC ommitSync=Yes;"

Делаю запрос через TADOQuery:
SELECT AC.RULEISN, COUNT(*) FROM AGRCOND AC
WHERE AC.RULEISN NOT IN (2,3,4,5,6) AND
((AC.DATEBEG BETWEEN :DATEBEG AND :DATEEND) OR
(AC.DATEDENOUN BETWEEN :DATEBEG AND :DATEEND) OR
(AC.DATEBEG <= :DATEBEG AND AC.DATEDENOUN >= :DATEEND) OR
EXISTS
(SELECT * FROM AGRSUM AGS
WHERE AGS.CONDISN = AC.ISN AND AGS.ACC = "1" AND
AGS.DATEVAL BETWEEN :DATEBEG AND :DATEEND))
GROUP BY AC.RULEISN

Через BDE выполнялся 5 мин(без индексов). Через ADO я не смог дождаться (> 2 часов).
Индексы пробовал добавлять, не помогает. Может есть какие-нибудь хитрые настройки в TADOQuery или TADOConnection?
Чего делать-то?
Буду крайне признателен за любые ссылки. Заодно, как вариант, посоветуйте компоненты доступа к DBF, желательно простенькие, бесплатные и зарекомендовавшие себя.
Спасибо.


 
Delirium   (2003-10-08 16:00) [1]

Попробуй через Jet


 
Praco   (2003-10-08 16:02) [2]

Забыл сказать.
В табличках примерно по 200000~300000 записей.
Когда я их заполняю, то скорость работы ADO и BDE примерно одинакова.


 
Vlad   (2003-10-08 16:16) [3]

Можно узнать, а что за база данных такая ? Уж больно названия полей знакомые...


 
KSergey   (2003-10-08 16:18) [4]

А может взять другие компоненты доступа для DBF, а? Какие - см. ветку рядом ("Срочно!...")


 
Praco   (2003-10-08 16:24) [5]

Delirium ©
А можно подробнее?

Vlad ©
Прошу в аську :) 72054101

KSergey ©
Уже смотрю, пока вижу либо платные, либо не работают на Д7.

Модератору
А куда делась моя анкета? Пришлось заново регистрироваться.


 
sniknik   (2003-10-08 16:31) [6]

ConnectionString:
через jet
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TEMP\RESEXPORT;Extended Properties=dBase III;Persist Security Info=False

может и будет полутше.


 
Praco   (2003-10-08 16:48) [7]

sniknik © (08.10.03 16:31) [6]
Спасибо, но примерно то же самое.


 
sniknik   (2003-10-08 17:18) [8]

а если попробовать запрос через обьеденение сделать по
AGS.CONDISN = AC.ISN? без подзапроса, всяко быстрей должно
не пробовал?
если не жалко, зашли таблички (можно (и даже лутше) урезаные, а то в яшик не влезут), и сколько на них у тебя BDE отрабатывает (для сверки), вечером попробую переделать.

а можеш загнать таблици в Access и в нем попробовать запрос составить. интересно как его мастер этот запрос сделает.


 
Praco   (2003-10-08 18:04) [9]

sniknik © (08.10.03 17:18) [8]
Пробовал

SELECT AC.RULEISN, COUNT(distinct ac.isn)
FROM AGRCOND AC
LEFT JOIN AGRSUM AGS ON AGS.CONDISN = AC.ISN
...

Конечно быстрей, на BDE 20 сек., но ни ADO, ни Jet не понимают, что в агрегатную функцию можно вставлять distinct.
Таблички высылаю, если есть охота в них ковыряться.
В любом случае спасибо.



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

Форум: "Базы";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.015 c
6-98758
Gray Angel
2003-09-05 12:06
2003.10.30
Нужен код слушалки порта на локальной машине.


1-98647
dream
2003-10-17 08:19
2003.10.30
как из dll передать строку в приложение ?


1-98711
Alesha aka Pokemon
2003-10-21 09:30
2003.10.30
Компонент TurboPower Product Suite


1-98729
MaS
2003-10-20 20:09
2003.10.30
Картинки


7-98901
IGORYOK
2003-08-18 10:49
2003.10.30
Каким образом можно подсоединиться через номер к мобилке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский