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