Access 2002

Набор записей типа snapshot


Если вы запросите набор записей типа snapshot, Jet должно будет полностью сформировать его в памяти, прочитав из базовых таблиц все запрошенные данные. Но если столбцов в запросе много, весь набор записей может не поместиться

в памяти, и часть его придется записать на диск, что сильно замедлит выполнение запроса. В то же время набор записей типа keyset, сформированный точно таким же запросом, вполне может полностью уместиться в памяти, поскольку Jet нужно будет прочитать только ключевые значения, — и это резко сократит время выполнения запроса. С другой стороны, если результирующий набор записей невелик, snapshot-3anpoc, скорее всего, выполнится быстрее keyset-запроса.

Как заставить Jet повторно откомпилировать и оптимизировать запрос

Запросы компилируются и оптимизируются при первом запуске. Больше запрос не компилируется до тех пор, пока вы не сохраните и не выполните его повторно. Поэтому, прежде чем передавать приложение пользователю, нужно обязательно выполнить все включенные в него запросы. Сохраните запрос в режиме конструктора, а затем выполните его и больше не сохраняйте.

Поскольку Jet выбирает оптимальную стратегию выполнения запроса, учитывая размер исходных таблиц и наличие в них индексов на момент компиляции запроса, после модификации индексов таблиц или значительного изменения их структуры либо количества их записей имеет смысл заставить Jet откомпилировать запрос повторно. Для этого нужно открыть запрос в режиме конструктора, сохранить его и выполнить.

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

Комментарии закрыты