none
Access+SQL Server проблемы с производительностью запроса (sp_execute) RRS feed

  • Вопрос

  • имеется БД на SQL express: 9.00.3042.00 (тоже самое происходит и на MS SQL Server 2005: 9.00.3054.00)
    и клиент на MS Access 2007 (база в формате 2000-2003 (*mdb)) (но тоже самое и с 2003 Access-ом и с базами в формате 2007го (*.accdb))

    на Сервере имеем таблицы SomeTable AnotherTable
    в Access-е имеем их как прилинкованные ODBC с теми же именами
    имеем запрос вида
    SELECT ST.Field1, ST.Field2, ...., AT.AnoherTableField
    FROM SomeTable AS ST LEFT JOIN AnotherTable AS AT
        ON ST.AT_ID = AT.ID

    при вызове данного запроса в профайлере MS SQL Server мы можем наблюдать запросы, посланные "Microsoft Office system" типа:

    declare @p1 int
    set @p1=1
    exec sp_prepexec @p1 output,N'@P1 int',N'SELECT "ID" ,"dbo"."AnotherTable"."ID" FROM "dbo"."AnotherTable"  WHERE ("ID" = @P1)',12
    select @p1
       
    и затем многократно (по количеству записей в SomeTable) повторяющееся:

    exec sp_execute 1,12
    exec sp_execute 1,12
    exec sp_execute 1,12
    exec sp_execute 1,14
    exec sp_execute 1,23
    exec sp_execute 1,23
    exec sp_execute 1,23
    etc.

    при большом кол-ве записей в SomeTable такой запрос выполняется очень большое кол-во времени.
    От чего может зависеть подобное поведение Access? Что нужно изменить, чтобы оптимизировать выполнение запроса?
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 0:23 MSDN Forums consolidation (От:SQL Server для разработчиков)
    19 февраля 2010 г. 6:47

Ответы

  • Рекомендации по оптимизации произодительности бд access находятся тут

    "

    Create linked (attached) tables to access server data. Avoid "direct" server access (that is, do not open remote databases and run queries against them). Instead, create attached tables or create pass-through queries

    "

    • Предложено в качестве ответа Nikonorov Evgeniy 20 февраля 2010 г. 17:34
    • Помечено в качестве ответа I.Vorontsov 24 февраля 2010 г. 5:51
    20 февраля 2010 г. 17:34