如何提高服务器数据库查询性能,有关 Access 数据库中的查询性能的信息

压缩数据库 压缩压缩数据库时,可以加快查询速度。压缩数据库时,将重新组织表的记录,以便记录驻留在由表的主键排序的相邻数据库页中。这提高了表中记录的顺序扫描的性能,因为现在只需读取最少的数据库页数才能检索所需的记录。压缩数据库后,运行每个查询以编译查询,以便每个查询现在都将具有更新的表统计信息。

索引字段索引用于设置联接两侧的查询字段和索引字段的条件的任何字段。或者,在这些字段之间创建关系。创建具有强制引用完整性的关系时,如果外键不存在,Jet 数据库引擎将创建外键上的索引。否则,Jet 数据库引擎使用现有索引。备注如果 Access 表较小,并且联接的字段已编制索引,则 Jet 数据库引擎会自动优化在硬盘上联接访问表和 ODBC 服务器表的查询。在这种情况下,Access 通过仅从服务器请求所需的记录来提高性能。确保从不同源联接的表在联接字段上编制索引。

选择适合的最小数据类型 当您在表中定义字段时,请选择适合字段中数据的最小数据类型。此外,请确保计划在联接中使用字段具有相同的数据类型或兼容数据类型,如自动编号和编号(如果FieldSize属性设置为长整数)。

仅添加必须具有的字段创建查询时,仅添加必须具有的字段。在用于设置条件的字段中,如果不想显示这些字段,请单击以清除"显示"复选框。

将 SQL 语句另存为查询如果窗体或报表的RecordSource属性设置为 SQL 语句,则将 SQL 语句另存为查询,然后将RecordSource属性设置为查询的名称。

避免计算字段避免在子查询中计算字段。如果将包含计算字段的查询添加到另一个查询,则计算字段中的表达式可能会降低顶级查询的性能。在下面的示例中,查询 Q1 用作查询 Q2 的输入:

问题 1:选择 IIF([my 列]="是"、"订单已确认"、"订单未确认")作为 X 从我的表;问题 2: 选择 = 从第 1 季度开始,从 X="订单已确认";由于 Q1 中的IIF表达式无法优化,因此 Q2 也无法优化。如果无法优化的表达式嵌套在子查询中,则无法优化所有查询。 构造查询的另一种方法如下:

问题 1: 选择 = 从我的表中包括"我的列" = "是";如果输出中需要表达式,请尝试将表达式放在窗体或报表上的控件中。例如,可以将以前的查询更改为提示 MyColumn 值的参数查询,然后将窗体或报表基于查询。然后,您可以在窗体或报表上添加显示"Hello"或"再见"的计算控件,具体取决于 MyColumn 中的值。 按如下方式构造查询:

参数 *要查看已确认的订单,请输入"是"。要查看未确认的订单,请输入"否"。文本;选择 [从我的表"我的列 " *要查看已确认的订单,请输入"是"。要查看未确认的订单,请输入"否";请输入"否"。"在窗体或报表上的计算控件中,键入:

[IIF([myColumn]"是"、"订单已确认"、"订单未确认")

指定"分组按"按联接字段中的值对记录进行分组时,为与总计的字段(计算聚合)位于同一表中的字段指定"分组由"。例如,在 Northwind.mdb 示例数据库中,如果创建一个查询,该查询在"订单详细信息"表中合计"数量"字段,然后按 OrderID 分组,则可以在"订单详细信息"表中为 OrderID 字段指定"按组"。如果在 OrdersID 表中为 OrderID 字段指定"组由",则 Access 必须先联接所有记录,然后执行聚合,而不是执行聚合,然后仅联接所需的字段。要获得更高的速度,请使用"分组通过"在尽可能少的字段上。或者,如果可以,请使用"第一个"函数。如果总计查询包含联接,请考虑在一个查询中分组记录,然后将此查询添加到执行联接的单独查询中。执行此操作时,某些查询可能会提高性能。

避免限制性查询条件尽可能避免对计算字段和非索引字段的限制性查询条件。使用可以优化的条件表达式。

在表之间联接中使用的字段中测试查询性能如果使用条件来限制具有一对多关系的表之间的联接中使用的字段中的值,则测试查询是否使用放置在"一"上的条件运行得更快ide 或联接的"多"侧。在某些查询中,可以通过将条件添加到联接的"一"侧的字段而不是联接的"多"端来实现更快的性能。

索引排序字段索引用于排序的字段。

使用生成表查询创建表如果数据很少更改,请使用生成表查询从查询结果创建表。使用生成的表而不是查询作为窗体、报表或其他查询的基础。请确保根据本文中阅读的指南添加索引。

避免使用域聚合函数避免使用域聚合函数,例如DLookup函数从不在查询中的表访问数据。域聚合函数特定于 Access,这意味着 Jet 数据库引擎无法优化使用域聚合函数的查询。而是将查询添加到函数正在访问的表或创建子查询。

使用固定列标题 如果要创建交叉表查询,请尽可能使用固定列标题。

使用运算符使用"之间"和运算符、In运算符和索引字段上的+运算符。

优化服务器上的性能 对于针对 ODBC 数据源的批量更新查询,请通过将FailOnError属性设置为"是"来优化服务器上的性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值