Лучший способ хранить беззнаковое 64-битное целое число в Oracle Database 11g с использованием OCCI

Я использую версию 11.2, и нет прямой поддержки uint64 в полях таблицы. Что вы предлагаете делать перформанс? Это должен быть первичный ключ.

Спасибо

1

Решение

возможно, преобразовать его в символ, затем вставить его как символ, с to_number, чтобы поместить его в правильный формат?

1

Другие решения

Я ничего не знаю об Oracle, но MS SQL страдает аналогично, и я закончил тем, что хранил свои 64-битные целые числа без знака в двоичных (8) полях. Если у Oracle есть похожие заглавные буквы (и я не могу себе этого представить), возможно, то же самое будет работать для вас.

В результате на SQL Server двоичные (n) поля сравниваются с другими двоичными (n) полями, которые эффективно сравниваются как байтовые массивы, и если они имеют одинаковый размер, это означает, что они также сравниваются как представления с прямым порядком байтов (если вы так их сохранили) и ты бы с ума сошел)

Извините, я не разбираюсь в Oracle. Надо потанцевать с тем, кто тебя принес =)

1

Я использую тип данных RAW (8) и пишу его с помощью:

uint64 i;
Bytes key((unsigned char*)&i, 8);
statement->setBytes(1, key);

Быстро и компактно, и, кажется, работает хорошо.

1
По вопросам рекламы [email protected]