powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / как правельно хранить данные о почтовом индексе, городах, номерах домов
17 сообщений из 17, страница 1 из 1
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34509103
nedba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как правельно хранить данные о почтовом индексе, городах, номерах домов.

Есть таблица a_location с полями city,postcode,street,house.
Очень часто выполняется запрос вида:

Код: plaintext
1.
2.
3.
4.
SELECT city,postcode,street,house
FROM   a_location
WHERE  UPPER(city) = UPPER(':CITY')
AND UPPER(street) = UPPER(':STREET')
AND house = :HOUSE

Cейчас в таблице около 5 млн записей - после внесения всех данных будет около 12 млн. Запросы уже выполняются невероятно долго (5-7 мин). Вопрос - может есть способ хранить эти данные как-то по другому или вобще может кто сталкивался с такой задачей и как ее решал?
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34509143
NF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NF
Гость
Индексы создать?
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34509206
nedba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
a_location_postcode_house USING btree (postcode, house) 	

a_location_uppercity USING btree (upper(city::text)) 	

a_location_upperstreet 	btree (upper(street::text)) 	
	
a_locations_all_uniq USING btree (postcode, city, street, house) 	

a_locations_id_key USING btree (id) 	

a_locations_postcode USING btree (postcode)

все кроме последнего UNIQUE
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34509910
alex_UID_0xFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я могу ошибацо, но, возможно, стоит задумаццо о составном индексе?
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34763151
bug_scorobey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nedbaКак правельно хранить данные о почтовом индексе, городах, номерах домов.

Есть таблица a_location с полями city,postcode,street,house.
Очень часто выполняется запрос вида:

Код: plaintext
1.
2.
3.
4.
SELECT city,postcode,street,house
FROM   a_location
WHERE  UPPER(city) = UPPER(':CITY')
AND UPPER(street) = UPPER(':STREET')
AND house = :HOUSE

Cейчас в таблице около 5 млн записей - после внесения всех данных будет около 12 млн. Запросы уже выполняются невероятно долго (5-7 мин). Вопрос - может есть способ хранить эти данные как-то по другому или вобще может кто сталкивался с такой задачей и как ее решал?

Есть готовый софт (ибо вам еще проверку на корректность адреса делать и т.д. дедубликацию и много хитростей ) в принципе сократить можно до 300000-400000 (30000-40000 для домов) записей всю вашу базу я имею ввиду способ хранения и даже с учетом нечеткого поиска это будет <1-2 секунд

Сейчас мы работаем с базами от 100 000 000 адресов на простом писюке и как то никаких тормозов
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34763153
bug_scorobey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bug_scorobey nedbaКак правельно хранить данные о почтовом индексе, городах, номерах домов.

Есть таблица a_location с полями city,postcode,street,house.
Очень часто выполняется запрос вида:

Код: plaintext
1.
2.
3.
4.
SELECT city,postcode,street,house
FROM   a_location
WHERE  UPPER(city) = UPPER(':CITY')
AND UPPER(street) = UPPER(':STREET')
AND house = :HOUSE

Cейчас в таблице около 5 млн записей - после внесения всех данных будет около 12 млн. Запросы уже выполняются невероятно долго (5-7 мин). Вопрос - может есть способ хранить эти данные как-то по другому или вобще может кто сталкивался с такой задачей и как ее решал?

Есть готовый софт (ибо вам еще проверку на корректность адреса делать и т.д. дедубликацию и много хитростей ) в принципе сократить можно до 300000-400000 (30000-40000 для домов) записей всю вашу базу я имею ввиду способ хранения и даже с учетом нечеткого поиска это будет <1-2 секунд

Сейчас мы работаем с базами от 100 000 000 адресов на простом писюке и как то никаких тормозов

да и пока все это на sql2005
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34763360
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас бы все решилось использованием битмап индекса... Компания разработчик утверждает что получается ускорение в несколько раз.
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34766586
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если так долго выполняются запросы, то у вас либо не используются индексы, либо это выполняется на коммуникаторе
Наверное все же первое :)

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34769295
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, проблема ваших запросов в том, что вы действуете функцией UPPER() на столбцы . Скажем в SQL Server такой запрос будет гарантировано приводить к полному просмотру всей таблицы, даже при наличии индекса по city и street. Я вижу такие варианты решения:

1. Найти правильный способ сравнения без учета регистра (не используя функцию UPPER()). Например в SQL Server это делается с помошью Collation.
2. Хранить названия городов и улиц уже преобразованными к верхенму (или нижнему) регистру.
3. Создать вычисляемые столбцы UPPER(city) и UPPER(street) и построить на них индекс.

Вот как-то так
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34769298
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторда и пока все это на sql2005
Однозначно collation! Cyrillic_General_CI_AS
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34769356
bug_scorobey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Senja авторда и пока все это на sql2005
Однозначно collation! Cyrillic_General_CI_AS

да госопода а чем плох Cyrillic_General_CI_AS ------------ binary
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34769358
bug_scorobey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имею ввиду на всю базу
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34771202
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никто не задумывался, что названия городов хорошо бы вынести в справочник (как, впрочем, и улиц)? Если города набиваются вручную, то я уверен, что из 5 млн несколько десятков тысяч живут в "Моксва", "Мсква", "Мовска", не говоря уже об улицах...
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34771227
bug_scorobey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cane Cat FisherА никто не задумывался, что названия городов хорошо бы вынести в справочник (как, впрочем, и улиц)? Если города набиваются вручную, то я уверен, что из 5 млн несколько десятков тысяч живут в "Моксва", "Мсква", "Мовска", не говоря уже об улицах...

и еще кто нибудь пытался разложить адреса РФ в виде дерева
очень любопытная картина получается

а вообще то почта россии и мнс (кладр) обещают сделать к концу 2008 года крутую эталонную базу
соображения есть у кого?
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34771235
bug_scorobey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nedbaКак правельно хранить данные о почтовом индексе, городах, номерах домов.

Есть таблица a_location с полями city,postcode,street,house.
Очень часто выполняется запрос вида:

Код: plaintext
1.
2.
3.
4.
SELECT city,postcode,street,house
FROM   a_location
WHERE  UPPER(city) = UPPER(':CITY')
AND UPPER(street) = UPPER(':STREET')
AND house = :HOUSE

Cейчас в таблице около 5 млн записей - после внесения всех данных будет около 12 млн. Запросы уже выполняются невероятно долго (5-7 мин). Вопрос - может есть способ хранить эти данные как-то по другому или вобще может кто сталкивался с такой задачей и как ее решал?

Уважаемый не дба готов вам помочь поправить ситуацию не корысти ради а шевеления мозгов для пишите дам вам доступ к своему удаленному серваку на нем и подумаем что можно сделать
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34771507
nedba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 bug_scorobey
bug_scorobeyУважаемый не дба готов вам помочь поправить ситуацию не корысти ради а шевеления мозгов для пишите дам вам доступ к своему удаленному серваку на нем и подумаем что можно сделать

За предложение помощи спасибо! Но тут встает вопрос о неразглашении данных. А такой документ подписан.
Адреса обрабатываются не только для России, но и для многих стран Европы. По тому вопрос с доп справочниками, как предлагал Cane Cat Fisher, не может быть рассмотрен. Да, в столицах действительно наибольшее кол-во адресов - но пригороды составляют не менее 50-60 % объектов. Индексы жутко не эффективны. Сменить колейшенс для UTF-8 такой вариант был бы интересный. Но составных из (привожу для примера) французского, португальского, белорусского и польского - я не встречал. Да и базу в 40-50 Gb конвертить придется долго даже на мощном сервере.

2 bug_scorobey
bug_scorobeyЕсть готовый софт (ибо вам еще проверку на корректность адреса делать и т.д. дедубликацию и много хитростей ) в принципе сократить можно до 300000-400000 (30000-40000 для домов) записей всю вашу базу я имею ввиду способ хранения и даже с учетом нечеткого поиска это будет <1-2 секунд

Сейчас мы работаем с базами от 100 000 000 адресов на простом писюке и как то никаких тормозов

Можно ли узнать название софта?
...
Рейтинг: 0 / 0
как правельно хранить данные о почтовом индексе, городах, номерах домов
    #34781696
bug_scorobey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nedba2 bug_scorobey
bug_scorobeyУважаемый не дба готов вам помочь поправить ситуацию не корысти ради а шевеления мозгов для пишите дам вам доступ к своему удаленному серваку на нем и подумаем что можно сделать

За предложение помощи спасибо! Но тут встает вопрос о неразглашении данных. А такой документ подписан.
Адреса обрабатываются не только для России, но и для многих стран Европы. По тому вопрос с доп справочниками, как предлагал Cane Cat Fisher, не может быть рассмотрен. Да, в столицах действительно наибольшее кол-во адресов - но пригороды составляют не менее 50-60 % объектов. Индексы жутко не эффективны. Сменить колейшенс для UTF-8 такой вариант был бы интересный. Но составных из (привожу для примера) французского, португальского, белорусского и польского - я не встречал. Да и базу в 40-50 Gb конвертить придется долго даже на мощном сервере.

2 bug_scorobey
bug_scorobeyЕсть готовый софт (ибо вам еще проверку на корректность адреса делать и т.д. дедубликацию и много хитростей ) в принципе сократить можно до 300000-400000 (30000-40000 для домов) записей всю вашу базу я имею ввиду способ хранения и даже с учетом нечеткого поиска это будет <1-2 секунд

Сейчас мы работаем с базами от 100 000 000 адресов на простом писюке и как то никаких тормозов

Можно ли узнать название софта?

отправил вам на мыло а то надоели обвинения в рекламе
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / как правельно хранить данные о почтовом индексе, городах, номерах домов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]