复杂表达式 (表达式:算术或逻辑运算符、常数、函数和字段名称、控件和属性的任意组合,计算结果为单个值。表达式可执行计算、操作字符或测试数据。)是通过用 And 或 Or 运算符组合简单表达式而创建的。复杂表达式采取下列形式之一:
简单表达式 And 简单表达式
或
简单表达式 Or 简单表达式
复杂表达式是完全可优化或部分可优化的,具体优化方式取决于是一个还是两个简单表达式可优化,以及使用哪种运算符组合。如果以下三个条件均为真,则复杂表达式就是 Rushmore 可优化的:
注释 如果按照字段在“索引”窗口 (“索引”窗口:Access 数据库中的一个窗口,在其中可以查看或编辑一个表的索引,或者创建多字段的索引。)中的显示顺序来查询索引字段,从第一个索引字段开始,然后继续相邻的字段(最多可包含 10 个字段),则可以优化多字段索引。例如,如果有一个包含“姓氏”和“名字”字段的多字段索引,则可以针对“姓氏”或“姓氏”和“名字”优化查询,但是不能针对“名字”优化查询。
下列各种不同的简单查询条件表达式的组合表明查询优化的级别。
完全可优化的查询结果(使用 Rushmore)
- (可优化的表达式)And(可优化的表达式)
- (可优化的表达式)Or(可优化的表达式)
部分可优化的查询结果(不使用 Rushmore)
不可优化的查询结果
- (不可优化的表达式)And(不可优化的表达式)
- (不可优化的表达式)Or(不可优化的表达式)
- Not(可优化的表达式)
- Not(不可优化的表达式)
另外,也可以使用圆括号将简单表达式的组合加以分组,上面的规则也适用于用括号加以分组的表达式组合。
将简单可优化表达式组合成复杂表达式后,这些复杂表达式还可以组合成更复杂的表达式,而且根据上面的规则该表达式可能是可优化的。
以下示例的假设前提是您已为“姓氏”和“雇用日期”字段(使用这两个字段的简单表达式是可优化的)创建了索引,但没为“名字”字段(使用该字段的简单表达式是不可优化的)创建索引。下面的简单表达式组合示例表明了结果的优化程度。
完全可优化的查询结果(使用 Rushmore)
[LastName] = "Smith" And [Hire Date] < #12/30/90#
[LastName] = "Smith" Or [Hire Date] < #12/30/90#
部分可优化的查询结果(不使用 Rushmore)
[LastName] = "Smith" And [MiddleInitial] = "C"
[FirstName] = "Terry" And [MiddleInitial] = "C"
不可优化的查询结果
[LastName] = "Smith" Or [MiddleInitial] = "C"
[FirstName] = "Terry" Or [MiddleInitial]= "C"