By default, the database engine automatically creates a Fast Projection (FP ) index on all columns. FP indexes optimize projections and allow the database engine to evaluate certain kinds of search conditions.
An FP index is an array of n fixed-length entries where n is the number of rows in the table. The IQ UNIQUE storage directive applied to the column determine whether the column loads as a flat FP or NBit. Flat FP indexes contain actual column cell values. NBit is a compression scheme that uses n bits to index the dictionary where the data is stored. All datatypes except LOB (both character and binary) and BIT datatypes may be NBit columns.
FP_NBIT_AUTOSIZE_LIMIT limits the number of distinct values that load as NBit
FP_NBIT_LOOKUP_MB sets a threshold for the total NBit dictionary size
FP_NBIT_ROLLOVER_MAX_MB sets the dictionary size for implicit NBit rollovers from NBit to Flat FP
FP_NBIT_ENFORCE_LIMITS enforces NBit dictionary sizing limits. This option is OFF by default
sp_iqindexmetadata displays details about column indexes, including the FP index type (Flat FP or NBIT), the distinct counts, IQ UNIQUE n value, and dictionary size.
sp_iqrebuildindex rebuilds Flat FP as NBIT, or NBIT as Flat FP. The index_clause can reset IQ UNIQUE n to an explicit value from '0' (to recast an NBIT column to Flat FP) up to the limits defined in the FP_NBIT_AUTOSIZE_LIMIT and FP_NBIT_LOOKUP_MB options. If the count exceeds the n value, and FP_NBIT_ENFORCE_LIMITS=ON, the operation rolls back. If the FP_NBIT_ENFORCE_LIMITS=OFF (default), the NBIT dictionary continues to grow.