Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > выбор типа поля для ключа - 20 байтов


Автор: Alexandr87 2.8.2006, 06:26
Есть данные - 20 байтов, по которым идентифицируется запись, т.е. их нужно будет использовать как ключ.

Какое поле лучше использовать.

Сейчас конвертирую в hex стрниг - но это уже 40 байтов. В чем хранить?

Добавлено @ 06:28 
забыл уточнить - желательно решение, не зависимое от конкретной базы.

Автор: LSD 2.8.2006, 14:20
Бинарное byte(20): меньше занимает места чем строки, при сравнении не используется лексикографический порядок, значит происходит быстрее, индексы будут более компактные, значит производительность опять выше.

Автор: Alexandr87 3.8.2006, 06:20
а как составить sql запрос для поиска по такому полю.

Автор: LSD 3.8.2006, 09:36
Если тебе надо выполнить запрос в интерактивном SQL клиенте, то так (синтаксис для Oracle):
Код
select * from my_table t
  where t.id = hextoraw('2A3C0DB33C982D9B6639636271EBBAA2')


А если из некого языка, то используй подстановочные параметры. Например для Java:
Код
Connection conn;
byte[] id;
....
PreparedStatement statement = conn.prepareStatement("select * from my_table t where t.id = ?");
statement.setBytes(1, id);
ResultSet resultSet = statement.executeQuery();

Автор: Alexandr87 4.8.2006, 15:01
спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)