Procesamiento de la selección de registros en el servidor de la base de datos
Lo más importante que puede hacer para acelerar el procesamiento de informes es limitar la cantidad de datos que se devuelven de la base de datos. La herramienta principal para hacerlo es la fórmula de selección de registros.
Los controladores que se proporcionan con Crystal Reports para los orígenes de datos SQL permiten "procesar" una selección de registros en el servidor de la base de datos. Si se especifica una fórmula de selección de registros en un informe basado en un origen de datos SQL, Crystal Reports la analiza, genera una consulta SQL y transfiere esta consulta al servidor de la base de datos. A continuación, la selección de registros se realiza en dos fases:
- la primera fase de la selección de registros tiene lugar cuando el servidor de la base de datos procesa la consulta SQL y devuelve un conjunto de registros a Crystal Reports
- en la segunda fase, Crystal Reports evalúa localmente más detalladamente la fórmula de selección de registros del conjunto de registros devuelto desde el servidor de la base de datos.
Ya que los servidores de base de datos suelen ser más rápidos que las estaciones de trabajo, tiene la ventaja de especificar fórmulas de selección de registros que puedan procesarse en el servidor en la primera fase. De esta forma, se minimiza la selección de registros en la máquina local en la segunda fase. En el servidor se pueden procesar los siguientes tipos de selecciones de registros:
- Selecciones con campos indexados y no indexados (los campos indexados proporcionan una respuesta más rápida).
- Consultas SQL con cláusulas AND y OR.
- Campos de enunciado SQL que realizan cálculos de fórmulas para la selección de registros. Para obtener información sobre los tipos de enunciados SQL admitidos por el servidor SQL, consulte la documentación del servidor.
Procesamiento de la selección de registros: un ejemplo
En este ejemplo se muestran las ventajas de escribir fórmulas de selección de registros que puedan procesarse en el servidor de la base de datos.
La tabla Pedidos de la base de datos de ejemplo Xtreme contiene 2.001 registros, de los cuales 169 presentan fechas de pedido anteriores a 1997. Supongamos que desea elaborar un informe sólo con dichos registros. Por otra parte, podría utilizar la fórmula de selección de registros siguiente:
Year ({Pedidos.Fecha del pedido}) < 1997
La consulta SQL generada enviará los 2.001 registros a Crystal Reports y, luego, la fórmula de selección de registros reducirá el número a 169. Para ver esto, haga clic en Mostrar consulta SQL en el menú Base de datos y fíjese en que la consulta SQL no tiene cláusula WHERE. Esto se debe a que Crystal Reports no puede procesar la función Year ( ) en la cláusula WHERE.
Por otra parte, esta fórmula de selección de registros genera el mismo informe:
{Pedidos.Fecha del pedido} < #Jan 1, 1997#
Esta segunda fórmula, sin embargo, se puede procesar en el servidor de la base de datos. La consulta SQL generada sólo envía 169 registros a Crystal Reports. Por lo tanto, cuando Crystal Reports evalúa la fórmula de selección de registros, no es necesario eliminar más registros. Haga clic en Mostrar Consulta SQL en el menú Base de datos y observe que la consulta SQL resultante tiene una cláusula WHERE.
Como muestra este ejemplo, la velocidad de procesamiento del informe mejora cuando mejora la fórmula de selección de registros. En este caso, ambas fórmulas generan el mismo informe, pero la segunda aprovecha la potencia y las optimizaciones que el servidor de la base de datos puede utilizar para manejar sus propios datos.
Sugerencias sobre el rendimiento de la selección de registros
Considerar los siguientes elementos relacionados con el rendimiento cuando esté configurando sus solicitudes de selección:
Generalidades
Para procesar la selección de registros, debe seleccionar "Usar índices o servidor para rapidez" en el cuadro de diálogo Opciones del Informe; haga clic con el botón secundario en Informe y seleccione Opciones del Informe.
En las fórmulas de selección de registros, evite conversiones de tipos de datos en los campos que no sean de parámetros.
Por ejemplo, evite el uso de ToText ( ) para convertir un campo numérico de la base de datos en campo de cadena de base de datos.
Puede reducir algunas fórmulas de selección de registros que usan enunciados constantes.
Bases de datos SQL
Puede reducir la selección de registros de campos indexados o no indexados.
El servidor SQL responde más rápido si usa campos indexados.
Puede reducir cláusulas AND y OR.
Puede reducir fórmulas de selección de registros que contengan algunos tipos de fórmulas incrustadas.
Debe incorporar los campos de enunciado SQL para reducir cálculos de fórmulas necesarios para la selección de registros.
Por ejemplo, no es posible reducir una selección de registros de
{@PrecioFinal TAG 1000}
donde@PrecioFinal = (Pedidos x Cantidad)
. Sin embargo, si se reemplaza@ExtendedPrice
por un campo de enunciado SQL, éste se podrá procesar.En el menú Base de datos, haga clic en Mostrar Consulta SQL para ver el SQL que se enviará al servidor de la base de datos.