Существует также timeit , который является частью стандартной библиотеки и действительно прост в использовании. Помните: не изобретайте велосипед!
Будьте осторожны с тем, что это может сделать с вашими индексными b-деревьями. Поскольку SHA1 не будет последовательным, ваши записи будут очень медленными из-за всех скачков в btree.
Если последовательность не работает, я обычно рекомендую последовательный GUID / UUID (см. SQL Server NEWSEQUENTIALID () например).
Если вы хотите сделать SHA1 своим первичным ключом, зная это, вы можете преобразовать его в стандартный шестнадцатеричный формат, в котором обычно отображается SHA1 (упрощает ввод). Я бы не рекомендовал двоичный формат, так как вы не сможете ввести его для отладки и т. Д.
В частности, если вы вводите двоичные параметры в базу данных (например, через libpq), используйте bytea. Если вы хотите проделать множество манипуляций с помощью простых текстовых запросов, конвертируйте в шестнадцатеричный и сохраните в текстовом или в столбце varchar.
PostgreSQL, конечно, не будет иметь никаких проблем в целом с 20-байтовыми ключами, за исключением того, что накладные расходы на производительность составляют конечно больше, чем с последовательностью.
Вы можете либо преобразовать в шестнадцатеричный, либо в base64 и использовать столбец varchar
, либо попытаться просто сохранить его в столбце с типом bytea
. Я бы попробовал создать таблицы с множеством случайных значений в обоих форматах и посмотреть, как они работают.
См. документацию PostgreSQL по bytea
для получения информации об этом типе.