Повышение производительности при отборе записей

Оценить
(0 голоса)

Во многих случаях отбор записей представляет собой ту часть процесса формирования отчета, на которую приходятся наибольшие затраты времени, особенно в случае крупных баз данных. Если вы работаете с базой данных ПК, которая хранится на локальном или сетевом диске, Crystal Reports самостоятельно осуществляет отбор записей, считывая каждую запись из базы данных и выбирая только те, которые соответствуют установленному критерию отбора. Если вы работаете с базой данных, которая находится на сервере (например, SQL Server или Oracle), Crystal Reports добавляет в запрос, отправляемый на сервер, конструкцию WHERE, после чего сервер базы данных выполняет запрос и возвращает обратно Crystal Reports только те записи, которые удовлетворяют условию, указанному в конструкции WHERE.

В любом случае, общая производительность, скорее всего, возрастет, если вы для процедуры выбора записей примените индексированные поля (в случае баз данных ПК это часто весьма существенно влияет на производительность). Индексированные поля — это поля специального назначения, созданные еще в процессе проектирования базы данных. Индекс поля хранит все значения этого поля в предварительно отсортированном виде, что значительно ускоряет отбор записей по этому полю. Узнать, является ли данное поле индексированным, можно у разработчика базы данных.

Узнать, какие поля являются индексированными, также можно и воспользовавшись вкладкой Links (Связи). Чтобы отобразить эту вкладку, либо щелкните на кнопке Database Expert (Эксперт баз данных), которая находится в панели инструментов экспертов, либо выберите в меню Database (База данных) пункт Database Expert. На экране появится диалоговое окно Database Expert. Далее просто перейдите на вкладку Links (чтобы эта вкладка стала доступной, в отчет необходимо добавить, по меньшей мере, две таблицы), которая показана на рис. 4.11.

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

Совет. В версиях, предшествующих Crystal Reports 9, символ перевернутой палатки не появляется при работе с базами данных SQL. Новые версии Crystal Reports, однако, уже отображают индексы для наиболее популярных баз данных SQL, а также для баз данных, ориентированных на ПК. Тем не менее, в некоторых случаях символ палатки все же может и не отображаться, что зависит от используемого драйвера базы данных.

Далее установите флажок Indexes Or Server for Speed (Использовать индексы или сервер для повышения быстродействия). Установить этот флажок для текущего отчета можно в диалоговом окне Report Option, которое появляется при выборе в меню File пункта Report Options. А установить эту опцию так, чтобы она применялась ко всем отчетам, которые будут создаваться в дальнейшем, можно на вкладке Database (База данных), доступной при выборе в меню File пункта Options. Если не установить этот флажок, Crystal Reports вообще не будет использовать индексированные поля.

Базы данных SQL (или базы, ориентированные на ПК, для доступа к которым используется интерфейс ODBC) в плане производительности несколько отличаются от баз данных для ПК. Как правило, разработчики отчетов стремятся переложить обязанность выбора записей, если это возможно, на сервер базы данных (с помощью упомянутой выше конструкции WHERE). Обычно это можно сделать, используя для подготовки критериев отбора эксперт Select Expert; применение редактора Formula Editor может привести к появлению функций, которые Crystal Reports не сможет передать серверу базы данных. Кроме того, внесение изменений в то, что создает Select Expert, с помощью операции I s Formula или через кнопку Show Formula, может серьезно ухудшить производительность сервера базы данных при выполнении выборки. Так же как и в случае баз данных, ориентированных на ПК, обязательно проверяйте, чтобы флажок Use indexes or Server for Speed в окне Report Option был установлен.

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

Повышение производительности при отборе записей

Подробнее в этой категории: « Создание простого отчета
Создание простого отчета
Эксперт Select Expert
Выбор записей с помощью полей даты
Работа с формулой отбора записей напрямую
Чувствительность к регистру и отбор записей

Добавить комментарий


Защитный код
Обновить