直接索引查找的实现和目的
当WHERE子句谓词中使用的所有列都是索引的一部分时,DB2优化器会选择直接索引查找。
例如,如果我们有如下所示的ORDERS DB2表。
| 订单ID (ORDER_ID) | 订单日期 (ORDER_DATE) | 订单总额 (ORDER_TOTAL) |
| Z22345 | 30-10-2020 | 342 |
| Z33412 | 14-08-2020 | 543 |
| Z56990 | 19-10-2020 | 431 |
| Z56902 | 21-09-2020 | 6743 |
| Z99781 | 04-11-2020 | 443 |
| Z56112 | 29-08-2020 | 889 |
在这个表中,有一个索引,其中包含名为ORDER_ID和ORDER_DATE的列。对于下面的查询,DB2优化器将选择直接索引查找,因为SELECT语句中使用的列也是索引的一部分。
示例
SELECT ORDER_ID, ORDER_DATE, INVOICE_ID FROM ORDERS WHERE ORDER_ID = ‘Z33412’ AND ORDER_DATE = ‘14-08-2020’
上述查询的结果如下。
| 订单ID (ORDER_ID) | 订单日期 (ORDER_DATE) |
| Z33412 | 14-08-2020 |
在上面的查询中,WHERE子句对主键的一部分列都有谓词,因此它们的索引应该已经存在。在这种情况下,优化器可以使用这些索引在索引空间中查找,并从数据空间中检索相应的数据(在本例中为INVOICE_ID)。
这种访问方法比其他访问方法快得多,因为优化器不必在数据页中查找所需的数据。所有信息都已存在于索引页中,这大大降低了SQL成本。
理想情况下,只有当我们只需要检查表中是否存在行/数据时,才使用这类查询。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP