我使用下面的查询来检查临时表中的数据。还定义了一个索引。我可以感觉到,将索引添加到临时表后,查询会尽快给出结果。我想知道编译器如何使用索引。有没有办法找到编译器针对我使用过的查询使用的索引列表。
注意 - 我知道 XREF 为非索引表提供了 WHOLE-INDEX。但我无法找出索引表使用的所有索引是什么。
DEFINE TEMP-TABLE TT_DATA NO-UNDO
FIELD TT_PART AS CHARACTER
FIELD TT_DESC AS CHARACTER
FIELD TT_IN AS CHARACTER
FIELD TT_VEND AS CHARACTER
FIELD TT_GLOB AS CHARACTER
FIELD TT_TYPE AS CHARACTER
INDEX TT_IDX1 IS PRIMARY
TT_PART
TT_IN
TT_VEND
.
FOR EACH <TABLE> NO-LOCK:
FIND TT_DATA NO-LOCK
WHERE TT_PART = "015564"
AND TT_IN = "VC"
AND TT_VEND = "SUPPLIER" NO-ERROR.
IF AVAILABLE TT_DATA THEN
DO:
/*ACTUAL LOGIC GOES HERE*/
END. /* IF AVAILABLE TT_DATA THEN*/
END. /*FOR EACH <TABLE> NO-LOCK:*/
如果您使用 XREF,则查找 SEARCH 行(如果是 XML,则为元素)。他们告诉您用于该查询的索引。
相同的 SEARCH 行会告诉您这是否是一个 WHOLE-INDEX 查询。