imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 06.05.2008, 23:32     # 1
7en
Newbie
 
Регистрация: 11.01.2003
Адрес: c:\windows\system32
Сообщения: 28

7en Путь к славе только начался
Question Хеш-код как поле для сравнения?

Вопрос такой: есть база данных и в ней таблица "адрес", мне нужно добавляя нового клиента проверять не существует ли уже добавляемый адрес клиента в таблице(2 клиента из однои семьи и тд.), я решил, что (чем сравнивать каждый раз несколько полей), можно объединять улицу + номер дома + индекс + город в одно длинное слово снимать хеш (метод в Java: String.hashCode() ) и хранить его в таблице "адрес", чтобы воспользоваться этим полем для сравнения при добавлении клиента и вот хотелось бы узнать намного ли я выиграю в скорости сравнивая по хеш, а не по полям (улица,номер дома,индекс и тд.)?

П.С. База данных PostgreSql 8.3, язык Java.
7en вне форума  
Старый 06.05.2008, 23:37     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
намного ли я выиграю в скорости сравнивая по хеш, а не по полям (улица,номер дома,индекс и тд.)?
Настолько насколько хэш короче самой строки.
RaZEr вне форума  
Старый 07.05.2008, 01:16     # 3
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 515

Borland - Гад и сволочь
Нужно учитывать ещё одну тонкость: наличие дополнительного пробела в адресе или различие в регистре одной буквы или тому подобная ерунда изменит хэш до полной неузнаваемости...
Можно, конечно, прикрутить к процедуре ввода справочник типа КЛАДР и хранить адреса в стандартизованном виде, выверенном по справочнику; а для сравнения адресов использовать хэш CRC32 (впрочем, возможно будет достаточно и CRC16). Но здесь нужно учитывать, что лишний справочник + процедура приведения адреса к стандартному виду тоже требует времени на обработку, да и процедура вычисления хэша для вновь вводимого адреса "небесплатна" (в смысле вычислительных ресурсов)...
А кроме чисто вычислительных ресурсов, неплохо бы учесть и траффик. Это некритично, если база локальная, а вот работа с КЛАДР через Интернет создаст весьма нехилую нагрузку на канал (и на веб-сервер).

В общем, хэшированиение нестандартизованных адресов ИМХО бессмысленно. А их предварительная стандартизация при вводе увеличит ресурсоёмкость приложения (и его сложность) на порядок...

P.S. Прикрутив к процедуре ввода КЛАДР, можно хранить в базе не название улицы и города с почтовым индексом, а цифровой код соответствующего элемента КЛАДР (и его-то и использовать "вместо хэша") - но, повторюсь, только если база локальная либо у клиентской части базы свой локальный КЛАДР (ага, и локальная СУБД, в которой он крутится; и не нужно забывать о том, что КЛАДР воизбежание разночтений необходимо обновлять на сервере и на клиенте одновременно).
В общем, сдаётся мне, овчинка не стоит выделки...
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 07.05.2008, 01:49     # 4
7en
Newbie
 
Регистрация: 11.01.2003
Адрес: c:\windows\system32
Сообщения: 28

7en Путь к славе только начался
М-да... действительно. Просто мне казалось, что базе данных искать цифры легче, чем буквы с цифрами. А насчет пробелов... они бы просто удалялись из слова, и как я говорил, получалось бы одно длинное слово. Ну вобщем ясно. В любом случае спасибо за оперативное разъяснение.
7en вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:26.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.