Hello -

Please refresh my memory. Are there any performance issues that should be considered when defining a SP which contains a field from within a PE?

I also posted this question in the ADABAS - Scope of Product forum.


I wouldn’t say there are “performance issues”. As with any other index, you need to be aware of what happens:

  • each occurrence of the PE is a separate index entry. So, if you have 100 records in your file and each record has an average of 20 occurrences, then you will have 100x20 (2000) index entries for the descriptor/superdescriptor.
  • watch your null suppression settings - if the de/sp is not null, you may have a lot of entries for empty values.
  • there really is a separate descriptor list for each PE occurrence. This allows you to FIND on something that is in PE occurrence n.
  • forward index compression option should be turned on - it will be particularly beneficial if the PE element is near the end of the superdescriptor.

Because each PE occurence is virtually a separate inverted list, a restriction exists for any de/sp involving a PE - you cannot do a READ LOGICAL on a super/de on a PE. The workaround for this is usually to use the HISTOGRAM to get the index values, then do a FIND on that to retrieve the records.

Check your file design: a requirement for an index involving a PE is often an indication that the PE should really be a separate table, since it indicates that you are selecting the PE occurrence, not the entire record. If the retrievals typically are just after the values of that PE occurrence rather than the whole record and all occurences of the PE, then you are incurring extra overhead to obtain the information from that PE occurrence. (Of course, if on the other hand, selecting that occurrence gives you the linked information that you want from the other PE occurrences and the parent record, then you are gaining significantly from the use of a PE!)