|
Задача для знатоков 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) опять мимо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |