хранимая процедура повышает производительность в банке данных доступа, почему? - PullRequest
1 голос
/ 05 марта 2012

Какой из них увеличивает производительность в Access:

  • Имея хранимые процедуры
  • , записывая наш запрос в коде VB
  • или записывая наш запрос вИсточник данных нашего управляющего свойства

    логично, что первое должно повысить производительность, но здесь я прочитал еще одну вещь. Что вы имеете в виду?

Не могли бы вы объяснить мне техническиили покажи мне ссылку?

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Если вы говорите о файле MDB, то вы должны использовать «хранимую процедуру» для ссылки на сохраненные запросы. Сохраненные запросы могут выполняться быстрее, чем встроенный SQL, потому что план запроса сохраняется вместе с запросом; когда вы выполняете встроенный SQL, SQL должен быть скомпилирован в план запроса.

Если вы запишите запрос в свойство DataSource элемента управления, Access создаст скрытый сохраненный запрос, поэтому производительность должна быть аналогичной.

В целом, вы задаете этот вопрос, потому что вы или ваши пользователи наблюдали низкую производительность? Если да, то где производительность плохая? Эта информация может помочь нам предложить хорошую возможность для повышения производительности.

Например, предположим, что ваша форма является формой заказа, и у вас есть текстовые поля с именем и адресом клиента. Источник записи формы - таблица [Orders]. Текстовое поле имени имеет в качестве источника управления

SELECT [CustomerName] FROM [Customers] WHERE [CustomerID] = [CustomerIdTextBox]

Аналогично, источник контроля текстового поля адреса:

SELECT [Address] FROM [Customers] WHERE [CustomerID] = [CustomerIdTextBox]

В этом случае вы значительно улучшите свою производительность, изменив источник записи:

SELECT [Orders].*, [Customers].[CustomerName], [Customers].[Address]
FROM [Orders] INNER JOIN [Customers] ON [Orders].[CustomerID] = [Customers].[ID]

Затем измените источник управления для текстового поля имени на [CustomerName] и для текстового поля адреса на [Address].

Почему это быстрее? В первом варианте у вас было два запроса (или, скорее, запрос для каждого элемента, который вы извлекаете из таблицы [Customers]). В новом дизайне у вас есть только один запрос.

Если, с другой стороны, вы спрашиваете о производительности из-за теоретической идеи о том, что один подход может быть быстрее другого, тогда вам следует использовать подход, который проще всего поддерживать. Если вы не можете наблюдать разницу в производительности, нет смысла использовать более производительное решение.

1 голос
/ 05 марта 2012

Хранимая процедура все еще должна быть выполнена.В Access это должно быть выполнено на вашем собственном компьютере, с обычной СУБД все еще должно выполняться на сервере.Какой подход более эффективен, зависит от решаемой вами проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...