Имя: Пароль:
IT
Админ
Задача для знатоков MуSQL - оптимизировать текстовую операцию
,
0 Доктор Манхэттен
 
18.09.18
21:14
Нужно запросом вычленить домен второго уровня из полного домена, например:
из http://www.ebay.co.uk должно получиться co.uk

Самое главное: при выполнении запроса должно выделиться в атмосферу наиминимальнейшее количество СО2, поэтому если у вас знания MySQL на уровне учебника, не отвечайте на этот вопрос. За один раз запрос может обрабатывать больше миллиона строк, поэтому это очень важно.
1 Доктор Манхэттен
 
18.09.18
21:15
В (0) в строку "http://www.ebay.co.uk"; автоматически добавилось "http://";, на самом деле там этого не должно быть.
2 Доктор Манхэттен
 
18.09.18
21:17
в (1) еще и точки с запятыми сами добавились. Жесть.
3 0xFFFFFF
 
18.09.18
21:45
Под "миллионы строк", дабы не выпускать много СО2, оптимизируют не априори кривой запрос, а структуру данных - таким образом чтобы наименьшими затратами выбирать необходимые данные.
4 Fram
 
18.09.18
22:20
(3)+1 такие задачи правильной записью в БД решают
5 vde69
 
18.09.18
22:22
я-бы пошел созданием ХП...

хотя есть еще вариант:
делаем дополнительную таблицу со всеми доменами первого уровня (".ru",".uk" и т.д.) и мудрил-бы с ней (оперируя длиной окончания)
6 Fram
 
18.09.18
22:22
7 Fram
 
18.09.18
22:24
REVERSE, SUBSTRING_INDEX, REVERSE и еще раз SUBSTRING_INDEX
8 vde69
 
18.09.18
22:26
REVERSE - затратная операция, особенно на полях переменной длинны
9 Fram
 
18.09.18
22:28
(8) переживет
10 Fram
 
18.09.18
22:40
(9)+ без реверса не вижу решения
11 Fram
 
18.09.18
22:46
вру! SUBSTRING_INDEX с конца тоже умеет искать. Тогда
SUBSTRING_INDEX(SUBSTRING_INDEX('http://www.ebay.co.uk', '.', -3), '.', 1)
12 Asmody
 
18.09.18
22:51
В 8 версии mysql есть функция regexp_substr().
Видимо, ТС даже фичалист не осилил, не то что учебник.
13 Доктор Манхэттен
 
18.09.18
23:43
(3) Очень хорошо, плюсую
(5) Ни в коем случае
(11) Если решать твоим способом, достаточно одного SUBSTRING_INDEX
(12) Второй худший вариант после (5)
14 Fram
 
19.09.18
00:07
(11) ошибся. если домен второго уровня то -2
15 Asmody
 
19.09.18
00:18
(13) Худший вариант - решать эту задачу средствами SQL.
16 Доктор Манхэттен
 
19.09.18
00:43
(14) +1. То что можно сократить SUBSTRING_INDEX - понял?
(15) опять мимо
Независимо от того, куда вы едете — это в гору и против ветра!