本节中提供的信息旨在帮助您在运行报表时优化处理速度并使网络流量减到最少。您将了解在一对多情况下,使用选择公式和索引更有效地创建报表的最佳方法。如果不使用本节中的信息,报表最后可能要多处理几十甚至数千个不必要的记录。
当在两个数据库表之间存在一对多的情况且程序匹配表中的记录时,有许多因素决定程序读取和求值的记录数。
以下各表显示不同的因素对程序最终要读取的记录数的影响。该图表基于下列假定:
表 A 包含 26 个记录(字母表中的每个字母各有一个记录)。
表 B 包含 2600 个记录(表 A 中的每个记录各有 100 个匹配记录)。
该情形将产生这样一个报表:此报表查找表 A 中的两个特定记录,以及表 B 中与表 A 中的这两个记录相匹配的 200 (100+100) 个记录。
在最好的情形中,程序只需读取约 200 个记录即可完成该任务。
在最糟的情形中,程序必须读取约 67,600 个记录才能完成同一任务。
注意: 对数据文件的性能考虑与对 SQL 数据库的考虑是不同的。数据文件是任何直接从 Crystal Reports 访问的非 SQL 数据库。为了便于讨论,SQL 数据库是指任何能够接受 SQL 命令、可以直接从 Crystal Reports 访问或通过 ODBC 访问的数据库,以及任何可以通过 ODBC 访问的其他类型的数据库。