Какой из них быстрее иметь ключ базы данных в виде String или Long?
Весьма вероятно, что long быстрее String. С одной стороны, процессоры могут иметь дело со значениями типа long «естественно», в то время как String нужно манипулировать с помощью программного обеспечения. Кроме того, строка, вероятно, будет занимать больше памяти, чем длинное значение, что означает, что кэши находятся под большим напряжением, и необходимо загружать больше данных с / сохранять на диск.
Если разница составляет микросекунды, это не имеет значения для нашего приложения. В таблице тысячи записей / строк.
Так что это зависит от операций. Если вы
Если Long быстрее, как преобразовать строку в Long, есть ли какой-нибудь Java API, чтобы уникальная строка могла быть преобразована в уникальный long?
Вы можете получить int из String, используя хеш-код . Эти целые числа, которые вы получите от этого метода, будут хорошо распределены в пределах допустимого диапазона, но не гарантированно будут уникальными. Как правило, невозможно получить уникальный int из строки, потому что строк строго больше, чем long.
Только представьте, что вы строите гигантскую таблицу, содержащую десятичное представление всех длинных значений. Теперь между ними есть тривиальное отображение строки <->. Но эта таблица по-прежнему не содержит строку «hello world», и больше не осталось длинных, которые можно было бы использовать для представления этой строки.
Обычно мой совет: если ваши исходные данные естественно типа string, используйте их и позвольте базе данных выполнить оптимизацию. Таблица, содержащая «тысячи» записей, не будет проблемой для любой текущей базы данных. Может быть, вы можете помочь производительности, создав умные индексы.