I found the following information here.
The module snmp_index implements an Abstract Data Type (ADT) for an
SNMP index structure for SNMP tables.
It is implemented as an ets table of
the ordered_set data-type, which means
that all operations are O(log n). In
the table, the key is an ASN.1 OBJECT
IDENTIFIER.
This index is used to separate the implementation of the SNMP
ordering from the actual
implementation of the table. The SNMP
ordering, that is implementation of
GET NEXT, is implemented in this
module.
For example, suppose there is an SNMP table, which is best implemented
in Erlang as one process per SNMP
table row. Suppose further that the
INDEX in the SNMP table is an OCTET
STRING. The index structure would be
created as follows:
snmp_index:new(string)
For each new process we create, we insert an item in an snmp_index
structure:
new_process(Name, SnmpIndex) ->
Pid = start_process(),
NewSnmpIndex =
snmp_index:insert(SnmpIndex, Name, Pid),
<...>
With this structure, we can now map an OBJECT IDENTIFIER in e.g. a GET
NEXT request, to the correct process:
get_next_pid(Oid, SnmpIndex) ->
{ok, {_, Pid}} = snmp_index:get_next(SnmpIndex, Oid),
Pid.
In Conclusion with the information I know and information provided in the previous quote, I believe that the SNMP indices should not be changed due to that fact that it would defeat the purpose of an index (correct me if I am wrong).
UPDATE: The way I see it, an SNMP index is similar to a database index, but it indexes network devices for reference. The only time this index should change is when hardware is removed or added. You wouldn't want you database indexes changing on an existing record because it could cause duplicates or other issues. Maybe someone could shine some light on this question with another answer or comment. I know a lot about networking, but I have never heard of SNMP indeces changing. I Googled this for about an hour and didn't come up with anything very helpful other than the web page already mentioned and the Wiki page.