Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Первый прямой запрос к DBF после перезагрузки.... (число прочтений - 1392 )
Smurf
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 11. Апреля 2008
Первый прямой запрос к DBF после перезагрузки....
12. Апреля 2008 :: 08:51
Печать  
Всем привет!!!
Столкнулся с такой вещью:
использую прямые запросы к dbf 1С через OLEDB, все запросы выполняются быстро благодаря совету kiruha по поводу индексов, даже если 1С закрыть и потом открыть, кроме одного момента - после перезагрузки компьютера первый запрос выполняется очень долго. Почему??? С чем это связано? Можно ли это как улучшить?
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Первый прямой запрос к DBF после перезагрузки.
Ответ #1 - 12. Апреля 2008 :: 22:42
Печать  
Тема совета Кирюхи не раскрыта  Подмигивание
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Первый прямой запрос к DBF после перезагрузки.
Ответ #2 - 13. Апреля 2008 :: 07:53
Печать  
Ну дык если запустить 1С она будет грузиться сек 10.
FoxPro где то меньше сек .
Куда уж быстрее?
И с индексами это никак не связано.

Еще есть затраты времени на открытие таблиц(чтение структуры).
Эти затраты порядка 0.1 сек . Вроде бы не смертельно, но для большого количества таких  расчетов
типа "Сводного Остатка" неприятно(учтитывая время таких запросов в районе 0.006 сек).
Поэтому я создаю OLEDBData один раз при начале работы системы.
Как заметил Uzhast в этом случае может наблюдаться эффект неактульности данных -
когда данные берутся не из таблицы , а из буфера, если за 1сек до этого было изменение текущим
пользователем данных - эти изменения могут быть не отражены.

Чтобы этого негативного эффекта не было надо выполнить после создания OLEDBData :
Код
Выбрать все
Запрос.Выполнить("EXECSCRIPT('SET REFRESH TO 0,-1')"); 


что означает установку читать данные из таблиц, а не из буфера

  
Наверх
 
IP записан
 
Smurf
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 11. Апреля 2008
Re: Первый прямой запрос к DBF после перезагрузки.
Ответ #3 - 13. Апреля 2008 :: 10:42
Печать  
Разобрался!!!
Как оказалось индексы совсем не использовались, поэтому и получалось что первый запрос выполнялся так долго.
И самое интересное то, что индексы стали использоваться только тогда когда коды в справочниках перевел из числовых в строковые. После этого всё залетало!!!  Улыбка
Конечно, всё это благодаря трудам Kiruha...  Подмигивание
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать