Компания, в которой я работаю, использует MacolaES для ERP-системы. База данных SQL Server структурирована таким образом, что когда вещи больше не считаются активными, они перемещаются из набора «активных» таблиц в набор «хронологических» таблиц. Это помогает сохранять «активные» таблицы достаточно маленькими, чтобы запросы возвращались быстро. С другой стороны, таблицы истории огромны. Соответствующие столбцы индексируются в этих таблицах, и если вы запрашиваете что-то конкретное, он быстро возвращается.
Проблема заключается в том, что вы создаете отчет Crystal, который запрашивает у пользователя параметр. По неизвестным мне причинам параметры Crystal не переводятся в параметры SQL, поэтому в итоге вы получаете запросы, выбирающие все из внутренней таблицы истории заголовка заказа, объединенной со всем в таблице истории строк заказа, что приводит к более чем 8 миллионам строк.
Есть ли способ заставить Crystal Reports использовать параметры в запросе SQL вместо загрузки всех записей и фильтрации по факту? Я где-то читал, что хранимая процедура должна работать, но мне любопытно, возможен ли обычный параметризованный запрос в интересах экономии моего времени.
Вот формула выбора:
(
trim({Orderheader.ord_no}) = {?Order No}
)
and
(
{Orderheader.ord_type} = 'O'
)
and
(
{orderlines.ord_type} = 'O'
)