DB2 中多索引和仅索引访问路径的使用和示例
问题:解释 DB2 优化器使用的多索引访问和仅索引访问路径之间的区别。分别给出两个示例。
解决方案
索引仅访问和多索引访问是 DB2 优化器为获取查询结果而选择的访问路径类型。当 SELECT 查询中给出的所有列都存在于索引中时,将使用索引仅访问路径。在这种情况下,优化器无需转到数据页来获取结果,所有数据都可以在索引页中找到。
例如,ORDERS 表的主键为 ORDER_ID,则对于以下 SQL 查询,DB2 优化器将选择索引仅访问。
示例
SELECT ORDER_ID FROM ORDERS.
多索引访问是由 DB2 优化器选择的访问路径,当 SQL 查询的 WHERE 子句对两个或多个索引具有谓词时。在这种情况下,将为每个索引(WHERE 子句中的列)提取索引空间/数据空间的结果,然后根据 WHERE 子句中使用的逻辑运算符(AND、OR)联接结果。
例如,如果 ORDERS DB2 表在 ORDER_ID 上具有主键,并在 INVOICE_ID 上构建了一个唯一索引。以下 SQL 查询将采用多索引访问路径。
示例
SELECT ORDER_ID, INVOICE_ID FROM ORDERS WHERE ORDER_ID IN (‘Z33476’, ’Z11674’, ‘Z88901’) AND INVOICE_ID IN (‘A19908’, ‘A90771’)
广告