You can designate up to five queryable attributes for each object type as inline attributes. Inline attributes are configured in the Identity Manager Repository Configuration object.
Inline attributes are no longer configured in UserUIConfig.
Designating an attribute as inline asks the data store to optimize the performance of queries against that attribute.
Identity Manager typically stores each value of a queryable attribute as a row in an attribute table that is separate from the main object table. The attribute table can be joined to the object table to select objects that match an AttributeCondition.
Identity Manager stores the value of an inline attribute, however, directly in the object table for that type. Designating an attribute as inline allows Identity Manager to generate more efficient SQL. A column expression on the main object table is faster than a JOIN to (or an EXISTS predicate against) the corresponding attribute table. This improves the performance of any query against the attribute.
You can characterize inline attributes as follows:
An inline attribute must be single-valued because its value is stored in a single column of the parent row in the object table.
Up to five queryable attributes can be inline for a type because the object table contains only five columns that can be used to store arbitrary attribute values.
The same set of queryable attributes is designated as inline for every instance of a type because the correspondence between the column value and the name of an attribute is specified only by the configuration. That is, the configuration of inline attributes for a type is the only way the repository knows which attribute is stored in which column.