There is a web specific optimization in QTP which you seem to have run into. In addition to the regular description QTP stores the sourceIndex
as a hidden property. Then when trying to identify the object it will first check if the HTML object with the stored sourceIndex
matches the description, if it does it assumes that it's the correct object and doesn't search the whole DOM.
Since the ordinal (index in this case) is a special property that is used for identification only if multiple objects match, the sourceIndex
optimization circumvents usage of the index.
In later versions of QTP (from 11 I think) QTP also stores a generated XPath to the object which has similar functionality.
You can disable these optimizations in Tools → Options → Web → Advanced