Subject RE: [IB-Architect] Indexes, Multi-Generations, and Everything
Author Claudio Valderrama C.
> -----Original Message-----
> From: Jim Starkey [mailto:jas@...]
> Sent: MiƩrcoles 28 de Junio de 2000 20:06
> When a record is inserted, the engine will make an index entry
> for each index defined on the table. When a record is modified,
> however, the engine will search the entire chain of back versions
> looking for a record with an duplicate value. If (and only if)
> it doesn't find a duplicate, it adds an index entry for the index.

I'm not sure of I understand: a complete search is made on updates. On
insertion, an entry is made in the index. Is this what you mean? Why do I
get an error immediately when inserting a duplicated value on an unique
index without the need to attempt a commit to see the error? Is there any
implicancy on efficiency, for example, when refreshing information on a
table, that I should try to insert first and if it fails, then I attempt an
update and not in the reverse order?

> Index retrievals are generally done [...]
> When a record number is found, the record version appropriate for
> the transaction is found. Before record can be accepted, however,
> the full record selection expression boolean is applied.

What's this selection expression? Are you referring to the internal
translation of WHERE clauses or not? Is there anything like
"short-boolean-circuits" when evaluating these expressions? You seem to
imply that the whole and full expression should be evaluated always.

> Without
> the boolean test, there is absolutely no guarentee that the target
> record actually had the value represented in the index.

Why? More on this, please, Jim. Is this due to the same nature of the
"indexes being considered noisy"?