Access 2002

Свойства отбираемых полей


Поэтому старайтесь включать в запрос как можно меньше столбцов. ADO считывает из исходных таблиц все свойства отбираемых полей (тогда как DAO/Jet извлекает только те свойства, к которым вы специально обращаетесь), и это снижает производительность.

Воздерживайтесь от использования в запросах выражений, особенно сложных, например таких, в которых применяется функция Ilf. В случае вложенного запроса (когда один запрос базируется на результатах другого) старайтесь выносить все выражения на самый верхний уровень.

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

Нормализуйте таблицы, разбивая большие таблицы на меньшие по размеру и нормализуя их. Благодаря уменьшению размера таблиц (а следовательно, количества страниц, необходимых для их хранения) те стратегии объединений, которые требуют сканирования таблиц, будут работать быстрее.

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

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