Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ускорить запросы Access к SQLServer
 
 автор: Dillinger   (21.06.2011 в 08:51)   личное сообщение
 
 

Здравствуйте,

Приложение на Accesse 2007 используется для создания(заполнения) отчета(таблица Ексель). Данные крутятся на SQL Server 2008 на отдельном сервере. Акцесс при обработке присоединят нужные таблицы через ODBC, расчетные данные получаю запросами DAO.Recordset. В "главной" таблице порядка 100 тыс. записей.

Еще неделю назад отчет обрабатывался за 10 мин. сегодня уходит около часа.

Выполняются запросы типа:

SELECT Sum([orit_count]*[orit_price]) AS SM FROM (dbo_Archives INNER JOIN (dbo_OrderItems INNER JOIN (dbo_Orders INNER JOIN dbo_Guests ON dbo_Orders.ordr_gest_ID = dbo_Guests.gest_ID) ON dbo_OrderItems.orit_ordr_ID = dbo_Orders.ordr_ID) ON dbo_Archives.arch_ID = dbo_Guests.gest_arch_ID) INNER JOIN dbo_MenuItemsVer ON dbo_OrderItems.orit_mitm_ID = dbo_MenuItemsVer.mitv_mitm_ID WHERE (((dbo_OrderItems.orit_deld_ID) Is Null) AND ((dbo_MenuItemsVer.mitv_mver_ID) Is Null) AND ((dbo_Archives.arch_dvsn_ID)=" & rstEx!Division & ") AND ((dbo_Archives.arch_DateOpen)>=#" & Format(Me!pDat, "mm\/dd\/yyyy") & "# And (dbo_Archives.arch_DateOpen)<#" & Format(DateAdd("d", 1, Me!pDat), "mm\/dd\/yyyy") & "#) AND ((dbo_MenuItemsVer.mitv_mtyp_ID)=2))


Подскажите как ускорить выполнение приложения?

Спасибо.

  Ответить  
 
 автор: osmor   (21.06.2011 в 09:04)   личное сообщение
 
 

Посмотрите план выполнения запроса. возможно нужны доп индексы
откажитесь от связанных таблиц, используйте запросы к серверу

  Ответить  
 
 автор: dillinger   (21.06.2011 в 10:52)   личное сообщение
 
 

А можно как-то программно создавать запросы к серверу, потому как параметры в where все время меняются?
или остается только создавать запрос к серверу: "select * from ТАБЛИЦА" и уже потом другим запросом обращаться к нему для выборки данных...

  Ответить  
 
 автор: osmor   (21.06.2011 в 11:31)   личное сообщение
 
 

вариант 1
http://support.microsoft.com/kb/112108
Вариант 2
создаете простой запрос к серверу
сохраняете его
когда нужно использовать заменяете у него свойство sql на сформированную строку

  Ответить  
 
 автор: dillinger   (21.06.2011 в 16:44)   личное сообщение
 
 

1- вариант понравился больше всего!!!

Время обработки 10 секунд при полной автоматизации )))

Тема ЗАКРЫТА.

Всем огромное спасибо!!!

  Ответить  
 
 автор: dillinger   (21.06.2011 в 11:25)   личное сообщение
 
 

ОООО спасибо огромное!!!
Используя запросы к серверу отчет обрабатывается 2 минуты

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList