Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Оптимизация join'а большой таблицы с собой же
|
|||
|---|---|---|---|
|
#18+
K.T.V.К сожалению, данные нормализовать нельзя, только работать над проблемой as is. Нет никакого универсального разделителя телефонов, поэтому нельзя определить, 3 штуки их в поле или 1 . Хорошо что договорились, что ищем только вхождение 1го в 3, а не наоборот :) K.T.V.есть таблица клиентов и их телефонов. Нужно выбрать тех клиентов, у которых телефоны совпадают Вам по-моему Гавриленко наглядно пояснил. Ну таки ладно. Итак, есть клиент1 и телефон 12345. Вполне себе кошерный телефон. И есть клиент2 и клиент3. У клиента2 есть строка, где телефоны "123" и "45678" сливаются в "12345678". Вы не знаете, как делить, но предполагаете своим кодом, что это может быть "12345" и "678". И выводите клиента 2 как совпадающего. Промашка. Клиент3 имеет телефон "123456", это совсем другой телефон, не "123-45", а "1-234-56", из другой страны префикс. Вы радостно выводите клиента3 как имеющего телефон "12345". Снова промашка. Вывод - 380 тысяч вариантов по 128 цифр в строке со СЦЕПЛЕННЫМИ номерами телефонов дадут Вам - как верно заметил из предыдущего сообщения коллега - "144 лярда вариантов" (с) Вы их честно ВСЕ покажете заказчику. Среди них 17 вариантов честных. Не 17 миллионов, не 17 тысяч, а ровно 17 телефонов у клиентов 1 есть у клиентов 2. Вывод? Задача не имеет решения, потому что решением является выборка честных вариантов, а Вы выдадите на выход пластмассовую иголку в стогу сена, которую магнитом не найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 19:03 |
|
||
|
Оптимизация join'а большой таблицы с собой же
|
|||
|---|---|---|---|
|
#18+
K.T.V., Еще раз. Абстрагируйтесь от задачи, передохните, погуляйте на свежем воздухе и посмотрите на проблему со стороны. "Нужно выбрать тех клиентов, у которых телефоны совпадают" - ТЕЛЕФОНЫ, а не куски из цифр, которые слеплены в текстовую строку. ТЕЛЕФОНОВ в такой текстовой строке НЕТ. Есть некая мешанина, хаотичная и бессмысленная. Заниматься построением логического кода, который что-то выведет - это пустая трата времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 19:05 |
|
||
|
Оптимизация join'а большой таблицы с собой же
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичK.T.V.Гавриленко Сергей Алексеевич, нет, потому что один телефон клиента полностью должен входить в телефон другого клиентаА где здесь телефоны клиентов? Здесь две строки, к которым не прилагается алгоритм разбития из на подстроки (телефоны), чтобы потом сравнить хотя бы с неразбитой второй строкой. Это не номера телефонов, а поиск одной строки в другой. Алгоритм решения был такой... Все строки сортируются по кол-ву символов. Для одного кол-ва символов все варианты сортируются по алфавиту. И дальше идет соответствующий перебор. Но вроде такая задача решалась средствами С++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 19:06 |
|
||
|
Оптимизация join'а большой таблицы с собой же
|
|||
|---|---|---|---|
|
#18+
Моя задача с такими условиями имеет быстрое решение. Но т.к. здесь собрались любители увольняться с работы из-за того, что им не предоставили сферические данные в вакууме, очевидно, что постить его смысла не имеет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 21:11 |
|
||
|
Оптимизация join'а большой таблицы с собой же
|
|||
|---|---|---|---|
|
#18+
K.T.V.Моя задача с такими условиями имеет быстрое решение. Но т.к. здесь собрались любители увольняться с работы из-за того, что им не предоставили сферические данные в вакууме, очевидно, что постить его смысла не имеет... Очень хочется взглянуть на решение. пжлст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 21:22 |
|
||
|
Оптимизация join'а большой таблицы с собой же
|
|||
|---|---|---|---|
|
#18+
blonduser, непричесанный вариант: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. like по полю + '%' дает возможность оптимизатору использовать индекс, за счет чего поиск значительно ускоряется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 21:36 |
|
||
|
Оптимизация join'а большой таблицы с собой же
|
|||
|---|---|---|---|
|
#18+
прошу прощения, индекс наверное все же такой: create nonclustered index new1 on #newtable (clean_phone_with_prefix asc) INCLUDE(client_id) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 21:41 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39625698&tid=1689984]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 400ms |

| 0 / 0 |
