On 2022-02-15 16:20, Vlad Khorsun wrote:
I'd vote to remove idx_numeric2 in favour of idx_decimal and look
how to improve
Decimal128::makeIndexKey() performance. For example, it stores every 3
decimal
digits into 10 bits using relatively complex (computationally)
algorithm with
shifts and multiplications. Storing every digit in 4 bits will use 2
bits per 3
digits more but should save come CPU circles, I believe.
But that is the storage format of Decimal128 (DECFLOAT(34)). It makes no
sense to replace that with something else for DECFLOAT(34) columns. So
maybe a different index format is necessary for INT128 (and NUMERIC(38,
...), because Decimal128 doesn't sound suitable for those types as it
has less precision (34 digits instead of 38) (similar like the double
precision index format is not suitable for INT64/BIGINT).
Mark
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel