Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Всем добрый день. Выполняю обработку списка телефонных номеров на стороне клиентского c# приложения. Задача в том, чтобы определить для каждого номера телефона, к какому региону\городу он принадлежит. В базе данных хранится информация по сопоставлению всех кодов телефонов по всем операторам связи с регионами\городами в формате, представленном ниже. Записей в этой таблице сопоставления 23 000. За 1 раз осуществляется обработка порядка 3 000 телефонных номеров в 100 параллельных потоков, задача регулярная, и поэтому важна производительность решения. Помогите, пожалуйста, сделать оптимальный запрос на быстрое получение данных из таблицы сопоставления по 1 номеру телефона. Например, как можно получить из таблицы сопоставления код региона для номеров телефонов: 89994911546 и 89825594623? Пример данных таблицы сопоставления "код телефона-регион" Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2019, 12:28 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
1. Убрать из '9994911xxx' xxx. Чай не порносайт. 2. Код: sql 1. 2. 3. Нахера тут "100 параллельных потоков"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2019, 12:40 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Ах да, 4. 89994911546 и 89825594623 приводите к 9994911546 и 9825594623. 5. Либо, что правильнее, в таблицу регионов добавьте 8. Вдруг Куала-Лумпур надо будет обрабатывать? 6. Но есть ишо +7. Значит в таблицу регионов надо добавить записи с +7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2019, 12:44 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
aleks222, Данные по [порядка 3 000 телефонных номеров] хранятся не в бд, а в оперативной памяти клиентского приложения. Телефонные номера собираются из различных источников данных в 100 параллельных потоках, задача в том, чтобы сразу после получения номера определить его принадлежность к региону. Можно, кончено, сначала собрать все телефоны, потом вставить их в какую-либо таблицу в БД и выполнить предложенный вами запрос, но данные по [порядка 3 000 телефонных номеров] не требуется хранить в БД, они временные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2019, 12:47 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
aleks222, Да, не учел это в примере данных. Все номера телефонов начинаются с "8", и в таблице сопоставления и в [порядка 3 000 телефонных номеров] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2019, 12:49 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Vsevolod Valeks222, Данные по [порядка 3 000 телефонных номеров] хранятся не в бд, а в оперативной памяти клиентского приложения. Телефонные номера собираются из различных источников данных в 100 параллельных потоках, задача в том, чтобы сразу после получения номера определить его принадлежность к региону. Можно, кончено, сначала собрать все телефоны, потом вставить их в какую-либо таблицу в БД и выполнить предложенный вами запрос, но данные по [порядка 3 000 телефонных номеров] не требуется хранить в БД, они временные. Боюсь показаться банальным, но с вашим уровнем программирования быстрее ВСТАВИТЬ номера в таблицу #temporal и выполнить запрос. Можно, даже, по одному. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2019, 12:51 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Vsevolod V, Найти один раз регионы для 3000 номеров гораздо оптимальнее, чем 3000 раз искать по одному. Для этого 1. Уберите из значений префиксов "ххх..." 2. Создайте индекс create index ... on t_REG_TelCodes (tl_code) include (i_id_region) 3. Процедура поиска Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 4. На клиенте формируйте список номеров в виде '<phone number = "89830514567" /><phone number = "89830524567" /><phone number = "8982511111" />' и передавайте при вызове процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2019, 16:04 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
invmVsevolod V, Найти один раз регионы для 3000 номеров гораздо оптимальнее, чем 3000 раз искать по одному. Для этого 1. Уберите из значений префиксов "ххх..." 2. Создайте индекс create index ... on t_REG_TelCodes (tl_code) include (i_id_region) 3. Процедура поиска Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 4. На клиенте формируйте список номеров в виде '<phone number = "89830514567" /><phone number = "89830524567" /><phone number = "8982511111" />' и передавайте при вызове процедуры. Зачем этот бред? Bulk Insert нонича вполне доступен в C#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2019, 16:13 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
aleks222Зачем этот бред? Bulk Insert нонича вполне доступен в C#.Не пробовал задать себе вопрос: "Нахрена провоцировать запись в ЖТ, когда можно этого не делать?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2019, 18:27 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
invmaleks222Зачем этот бред? Bulk Insert нонича вполне доступен в C#.Не пробовал задать себе вопрос: "Нахрена провоцировать запись в ЖТ, когда можно этого не делать?" Так он для этого и предназначен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2019, 05:50 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
aleks222Так он для этого и предназначен?Ну, дарагуля, банки тоже предназначены для выдачи кредитов. Однако, ты же не берешь кредит, когда можно его не брать? Или таки берешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2019, 10:35 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Vsevolod V, Парень, так тебе не помочь, от тебя надо структуру таблиц и запросы что ты выполняешь. ДА и тут надо , я думаю, постановку задачи или архитектуру менять. Поэтому надо техзадание. Ты же написал только какую=то лабуду в вопросе. В общем... без шансов почти тебе помочь. 23 тыщи записей сопоставлений вообще можно в клиента БД всосать на старте и далее уже там искать что надо. 100 параллельных потоков там 100% не нужно, нигде нет такого высокого уровня параллелизма, это не повысит производительность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2019, 11:41 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Vsevolod V, уберите кресты и в цикле лайком определяйте от самых длинных к самым коротким. Цикл по длине номера шаблона. Максимум за 9 проходов разберете все номера. Способ достаточно эффективный. На кой вам 100 потоков, реалтайм, что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2019, 13:29 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Вам нужно сделать справочник префиксов (DEF-кодов): Код: sql 1. заполнить его правильными префиксами, например взять с rossvyaz.ru Сделать функцию определения региона по префиксу, типа: Код: sql 1. 2. 3. 4. 5. После чего будет вам счастье: Код: plsql 1. 2. 3. 4. 5. 6. Это будет значительно быстрее, чем обрабатывать данные в софте на C#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39771853&tid=1688302]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 367ms |

| 0 / 0 |
