Имя: Пароль:
1C
1С v8
Забавная особенность SQL 2014 + ФИАС+ регион 02= тормоза при поиске улицы
,
0 MaximSh
 
06.05.18
17:03
Окружение:
SQL 2014 с SP2 (12.0.5707.0)
От версии платформы не зависит. Сейчас 8.3.10.2667
От конфигурации не зависит. Повторяемость БГУ 2, ЗКГУ, самописка на БСП.
От свежести данных ФИАС не зависит. Как и от количества загруженных регионов.
Должен быть загружен регион 02 Башкортостан

Проблема:
При вводе первых трех букв улицы в адресе производится поиск. Если в выдаче одна две улицы, то выдача найденных улиц через 12-15 секунд.
Если много, то быстро полсекунды.
Например, город Йошкар-Ола г, Марий Эл Респ, в поле улице "гск" - выдача быстро, а "вал" 12 секунд.
Тормоза по любому региону.

В чем прикол:
1) Если удалить регион 02, то все быстро, не зависимо от количества найденных улиц по первым трем буквам.
2) если sql 2017 то тоже все быстро, даже с регионом 02.

Rebuild Index, Reorganize Index task, Update Statistics в SQL влияния не оказывают.

И как побороть мыслей нет. И почему на скорость запроса влияют данные в базе?
1 H A D G E H O G s
 
06.05.18
17:16
"И почему на скорость запроса влияют данные в базе?"

Действительно, неожиданный вопрос...
2 H A D G E H O G s
 
06.05.18
17:20
Там адрес может получаться через Инет по данным сервиса 1С, SQL может быть непричем.

Посмотрите внимательней.
3 MaximSh
 
06.05.18
17:30
(1)  Не количество, а качество. Влияет 02 регион. Если его удалить и загрузить Москву и область (для теста влияния количества, так то не нужны эти регионы), то все быстро.
(2) Настроено, что адресный классификатор из загруженных данных, не из веб-сервиса к 1с во всех трех базах.
4 H A D G E H O G s
 
06.05.18
17:31
(3) Ну ms sql profiler вам тогда в руки.
5 mexanik_96
 
06.05.18
17:52
данные из озу вытесняются на дицк же, то что ищет пол сикенды вероятно находится в памяти, то что дольше на диске идет поднятие страниц очевидно же.

и "выдача найденных улиц" "выдачей" занимается не только сиквел.

сначала в (4) там если ок все тогда в рпхост, если не ок, план, железо
6 MaximSh
 
06.05.18
17:59
https://cloud.mail.ru/public/Gb8W/Pfbn5KQXW
profiler
Длительность 11,55 сек
7 MaximSh
 
06.05.18
18:13
В результате запроса одна строка, и все затрачиваемое время уходит на ее сортировку.
Запрос (начало улицы "гск" выдает 56 строк и выполняется за 0,205 секунд
8 MaximSh
 
06.05.18
18:15
(5) не вытесняется, ищу одно и тоже.
9 H A D G E H O G s
 
06.05.18
18:17
(7) сделайте mdop=1
10 H A D G E H O G s
 
06.05.18
18:17
max degree of parallelism=1 в настройках сервера SQL
11 MaximSh
 
06.05.18
18:26
(10) помогло, почитаю за что отвечает. Запросы по подбору улиц выполняются уже за 0,02 сек.
12 rphosts
 
06.05.18
18:34
(11) это не могло настолько помочь, максимум вдвое улучшить скорость выполнения. Может статистика устарела? Может базу давно пора сжать?
13 rphosts
 
06.05.18
18:36
ТС у тебя ФИАС внутри конфигурации?
14 H A D G E H O G s
 
06.05.18
18:37
(12) Чеж не могло то.
Тот момент, когда затраты на ожидания на синхронизацию дороже выигрыша за параллелизм.
15 MaximSh
 
06.05.18
18:55
(14)  большое спасибо за участие. Оставлять 1 вряд ли стоит. Требуется доп тестирование. Больше всего меня поражает влияние именно 02 региона. Мой родной 16. Если загружать в базу 16 и 02 регион— тормоза, если 16 и всех соседей + Москву и область, то быстро.
(13) фиас внутри, обновление статистики неё помогает. Попробую сжать, когда вернусь к компу.
16 rphosts
 
06.05.18
19:06
(15) и индексы перестрой и отпишись дало это чтото или нет
17 MaximSh
 
06.05.18
19:08
(16)  Rebuild Index, Reorganize Index task, Update Statistics в SQL влияния не оказывают. Это я сразу проверил. Запускаются по регламенту раз в неделю.
18 rphosts
 
06.05.18
19:14
(17) можно просто выгрузить в ДТ и загрузить обратно.... но только перед этим сделать бэкап!
19 H A D G E H O G s
 
06.05.18
19:33
(15) Жесть какая.
20 Fram
 
06.05.18
19:36
(15) > Оставлять 1 вряд ли стоит.
вообще то это рекомендация из ИТС. Древняя правда статья, но все же
21 Djelf
 
06.05.18
19:54
А откуда взялся "SQL 2014 с SP2 (12.0.5707.0)"?
Последняя на March 19, 2018 - SQL 2014 с SP2 (12.0.5579.0).
https://support.microsoft.com/en-sg/help/2936603/sql-server-2014-build-versions
Секретный релиз?
23 H A D G E H O G s
 
06.05.18
19:57
24 systemstopper
 
06.05.18
20:08
(7) >>В результате запроса одна строка, и все затрачиваемое время уходит на ее сортировку.

с чего ты решил что всё время уходит на сортировку?
25 systemstopper
 
06.05.18
20:39
(0) покажи duration этого события в профайлере, текст запроса sql и текстовый план
26 MaximSh
 
06.05.18
21:53
(12) (18) перезагрузка dt ничего не поменяла.

(21) блин, был древний 12.0.5207.0, автообновление системы проходило (запускал вручную), но конкретно sql с ошибками.  Обновил вручную до 12.0.5579.0. Ничего не поменялось.
27 MaximSh
 
06.05.18
22:00
(25) план здесь https://cloud.mail.ru/public/XFKp/nX7Vp6BFw
cpu 93, reads 1235, writes 1, duration 9598

запрос

exec sp_executesql N'SELECT TOP 20
T2._Fld18485,
T2._Fld18486,
T3._Fld18485,
T3._Fld18486,
T4._Fld18485,
T4._Fld18486,
T5._Fld18485,
T5._Fld18486,
T6._Fld18485,
T6._Fld18486,
T7._Fld18485,
T7._Fld18486,
T8._Fld18485,
T8._Fld18486,
T9._Fld18485,
T9._Fld18486,
T10._Fld18485,
T10._Fld18486,
T1._Q_000_F_010_00,
T1._Q_000_F_011,
T1._Q_000_F_013,
T1._Q_000_F_000,
T1._Q_000_F_014,
CASE WHEN (T1._Q_000_F_012 = 0x00) THEN 0x01 WHEN NOT (T1._Q_000_F_012 = 0x00) THEN 0x00 END
FROM #tt18 T1 WITH(NOLOCK)
LEFT OUTER JOIN dbo._InfoRg18472 T2
ON ((((((((((((@P1 IN (@P2, @P3, @P4)) AND (T2._Fld18473 = @P5)) AND (T2._Fld18474 = T1._Q_000_F_001)) AND (T2._Fld18475 = @P6)) AND (T2._Fld18476 = @P7)) AND (T2._Fld18477 = @P8)) AND (T2._Fld18478 = @P9)) AND (T2._Fld18479 = @P10)) AND (T2._Fld18480 = @P11)) AND (T2._Fld18481 = @P12)) AND (T2._Fld18482 = @P13)) AND ((T2._Fld18483 <> T1._Q_000_F_010_00)))
LEFT OUTER JOIN dbo._InfoRg18472 T3
ON ((((((((((((@P14 IN (@P15, @P16, @P17)) AND (T3._Fld18473 = @P18)) AND (T3._Fld18474 = T1._Q_000_F_001)) AND (T3._Fld18475 = T1._Q_000_F_002)) AND (T3._Fld18476 = @P19)) AND (T3._Fld18477 = @P20)) AND (T3._Fld18478 = @P21)) AND (T3._Fld18479 = @P22)) AND (T3._Fld18480 = @P23)) AND (T3._Fld18481 = @P24)) AND (T3._Fld18482 = @P25)) AND ((T3._Fld18483 <> T1._Q_000_F_010_00)))
LEFT OUTER JOIN dbo._InfoRg18472 T4
ON ((((((((((((@P26 IN (@P27, @P28, @P29)) AND (T4._Fld18473 = @P30)) AND (T4._Fld18474 = T1._Q_000_F_001)) AND (T4._Fld18475 = T1._Q_000_F_002)) AND (T4._Fld18476 = T1._Q_000_F_003)) AND (T4._Fld18477 = @P31)) AND (T4._Fld18478 = @P32)) AND (T4._Fld18479 = @P33)) AND (T4._Fld18480 = @P34)) AND (T4._Fld18481 = @P35)) AND (T4._Fld18482 = @P36)) AND ((T4._Fld18483 <> T1._Q_000_F_010_00)))
LEFT OUTER JOIN dbo._InfoRg18472 T5
ON ((((((((((((@P37 IN (@P38, @P39, @P40)) AND (T5._Fld18473 = @P41)) AND (T5._Fld18474 = T1._Q_000_F_001)) AND (T5._Fld18475 = T1._Q_000_F_002)) AND (T5._Fld18476 = T1._Q_000_F_003)) AND (T5._Fld18477 = T1._Q_000_F_004)) AND (T5._Fld18478 = @P42)) AND (T5._Fld18479 = @P43)) AND (T5._Fld18480 = @P44)) AND (T5._Fld18481 = @P45)) AND (T5._Fld18482 = @P46)) AND ((T5._Fld18483 <> T1._Q_000_F_010_00)))
LEFT OUTER JOIN dbo._InfoRg18472 T6
ON ((((((((((((@P47 IN (@P48, @P49, @P50)) AND (T6._Fld18473 = @P51)) AND (T6._Fld18474 = T1._Q_000_F_001)) AND (T6._Fld18475 = T1._Q_000_F_002)) AND (T6._Fld18476 = T1._Q_000_F_003)) AND (T6._Fld18477 = T1._Q_000_F_004)) AND (T6._Fld18478 = T1._Q_000_F_005)) AND (T6._Fld18479 = @P52)) AND (T6._Fld18480 = @P53)) AND (T6._Fld18481 = @P54)) AND (T6._Fld18482 = @P55)) AND ((T6._Fld18483 <> T1._Q_000_F_010_00)))
LEFT OUTER JOIN dbo._InfoRg18472 T7
ON ((((((((((((@P56 IN (@P57, @P58, @P59)) AND (T7._Fld18473 = @P60)) AND (T7._Fld18474 = T1._Q_000_F_001)) AND (T7._Fld18475 = T1._Q_000_F_002)) AND (T7._Fld18476 = T1._Q_000_F_003)) AND (T7._Fld18477 = T1._Q_000_F_004)) AND (T7._Fld18478 = T1._Q_000_F_005)) AND (T7._Fld18479 = T1._Q_000_F_006)) AND (T7._Fld18480 = @P61)) AND (T7._Fld18481 = @P62)) AND (T7._Fld18482 = @P63)) AND ((T7._Fld18483 <> T1._Q_000_F_010_00)))
LEFT OUTER JOIN dbo._InfoRg18472 T8
ON ((((((((((((@P64 IN (@P65, @P66, @P67)) AND (T8._Fld18473 = @P68)) AND (T8._Fld18474 = T1._Q_000_F_001)) AND (T8._Fld18475 = T1._Q_000_F_002)) AND (T8._Fld18476 = T1._Q_000_F_003)) AND (T8._Fld18477 = T1._Q_000_F_004)) AND (T8._Fld18478 = T1._Q_000_F_005)) AND (T8._Fld18479 = T1._Q_000_F_006)) AND (T8._Fld18480 = T1._Q_000_F_007)) AND (T8._Fld18481 = @P69)) AND (T8._Fld18482 = @P70)) AND ((T8._Fld18483 <> T1._Q_000_F_010_00)))
LEFT OUTER JOIN dbo._InfoRg18472 T9
ON ((((((((((((@P71 IN (@P72, @P73, @P74)) AND (T9._Fld18473 = @P75)) AND (T9._Fld18474 = T1._Q_000_F_001)) AND (T9._Fld18475 = T1._Q_000_F_002)) AND (T9._Fld18476 = T1._Q_000_F_003)) AND (T9._Fld18477 = T1._Q_000_F_004)) AND (T9._Fld18478 = T1._Q_000_F_005)) AND (T9._Fld18479 = T1._Q_000_F_006)) AND (T9._Fld18480 = T1._Q_000_F_007)) AND (T9._Fld18481 = T1._Q_000_F_008)) AND (T9._Fld18482 = @P76)) AND ((T9._Fld18483 <> T1._Q_000_F_010_00)))
LEFT OUTER JOIN dbo._InfoRg18472 T10
ON ((((((((((((@P77 IN (@P78, @P79, @P80)) AND (T10._Fld18473 = @P81)) AND (T10._Fld18474 = T1._Q_000_F_001)) AND (T10._Fld18475 = T1._Q_000_F_002)) AND (T10._Fld18476 = T1._Q_000_F_003)) AND (T10._Fld18477 = T1._Q_000_F_004)) AND (T10._Fld18478 = T1._Q_000_F_005)) AND (T10._Fld18479 = T1._Q_000_F_006)) AND (T10._Fld18480 = T1._Q_000_F_007)) AND (T10._Fld18481 = T1._Q_000_F_008)) AND (T10._Fld18482 = T1._Q_000_F_009)) AND ((T10._Fld18483 <> T1._Q_000_F_010_00)))
ORDER BY (T1._Q_000_F_000), (T10._Fld18485), (T9._Fld18485), (T8._Fld18485), (T7._Fld18485), (T6._Fld18485), (T5._Fld18485), (T4._Fld18485), (T3._Fld18485), (T2._Fld18485)',N'@P1 numeric(10),@P2 numeric(10),@P3 numeric(10),@P4 numeric(10),@P5 numeric(10),@P6 numeric(10),@P7 numeric(10),@P8 numeric(10),@P9 numeric(10),@P10 numeric(10),@P11 numeric(10),@P12 numeric(10),@P13 numeric(10),@P14 numeric(10),@P15 numeric(10),@P16 numeric(10),@P17 numeric(10),@P18 numeric(10),@P19 numeric(10),@P20 numeric(10),@P21 numeric(10),@P22 numeric(10),@P23 numeric(10),@P24 numeric(10),@P25 numeric(10),@P26 numeric(10),@P27 numeric(10),@P28 numeric(10),@P29 numeric(10),@P30 numeric(10),@P31 numeric(10),@P32 numeric(10),@P33 numeric(10),@P34 numeric(10),@P35 numeric(10),@P36 numeric(10),@P37 numeric(10),@P38 numeric(10),@P39 numeric(10),@P40 numeric(10),@P41 numeric(10),@P42 numeric(10),@P43 numeric(10),@P44 numeric(10),@P45 numeric(10),@P46 numeric(10),@P47 numeric(10),@P48 numeric(10),@P49 numeric(10),@P50 numeric(10),@P51 numeric(10),@P52 numeric(10),@P53 numeric(10),@P54 numeric(10),@P55 numeric(10),@P56 numeric(10),@P57 numeric(10),@P58 numeric(10),@P59 numeric(10),@P60 numeric(10),@P61 numeric(10),@P62 numeric(10),@P63 numeric(10),@P64 numeric(10),@P65 numeric(10),@P66 numeric(10),@P67 numeric(10),@P68 numeric(10),@P69 numeric(10),@P70 numeric(10),@P71 numeric(10),@P72 numeric(10),@P73 numeric(10),@P74 numeric(10),@P75 numeric(10),@P76 numeric(10),@P77 numeric(10),@P78 numeric(10),@P79 numeric(10),@P80 numeric(10),@P81 numeric(10)',1,7,90,91,1,0,0,0,0,0,0,0,0,2,7,90,91,2,0,0,0,0,0,0,0,3,7,90,91,3,0,0,0,0,0,0,4,7,90,91,4,0,0,0,0,0,5,7,90,91,5,0,0,0,0,6,7,90,91,6,0,0,0,7,7,90,91,7,0,0,90,7,90,91,90,0,91,7,90,91,91
28 MaximSh
 
06.05.18
22:14
(23)
влияние Max degree of parallelism
Оборотно-сальдовая ведомость по счету 105.00 (материальные запасы) за 2017 г.
Max degree of parallelism =1.  40 секунд.
Max degree of parallelism =0.  30 секунд.
Процессор core i5, hyperthreading отключен 4 ядра.
Получается нормальные запросы медленней не критично, проблемные - быстрее во много раз (в десятки).
29 MaximSh
 
06.05.18
22:18
(28) и еще важный момент, пишут, что Max degree of parallelism =1 благоприятно влияет на многопользовательскую работу. до 70 пользователей бывает в 3х базах.
30 H A D G E H O G s
 
06.05.18
22:38
(27) Запрос то все равно уежищный.
43000 строк результата в одной из физических операций


fld_18482=@P70

Посмотреть на значение P70 и что за измерение fld_18482 в регистре.
31 H A D G E H O G s
 
06.05.18
22:40
Пардон.
Вот это условие:

(T8._Fld18481 = @P69)) AND (T8._Fld18482 = @P70))
32 ildary
 
07.05.18
00:07
Простите мой новичковый вопрос - разве сейчас не проще включить онлайн работу с адресами, чтобы снять вопрос скорости работы со скачанными классификаторами, необходимостью регулярного обновления и грустью от раздувания базы?
33 rphosts
 
07.05.18
01:40
(29) разумеется, как только кто-то реально тяжелый распараллеливаемый запрос запустил - у остальных возможно подвисание.
34 rphosts
 
07.05.18
02:49
исходный запрос можно посмотреть?
35 systemstopper
 
07.05.18
08:55
(27) Скуль очень сильно ошибается в оценке кардинальности, на самом верху Est Rows 1 536 920 000 000 при факте в 1 строку.

Происходит  на 1-м паралеллизме, Est 2712 Act 113

Причины этого описаны здесь

https://www.sqlshack.com/sql-server-top-clause-performance-problem-parallelism/

Плюс many-to-many в merge join это плохо.

Плюс top - это row goal, что тоже создает проблемы с оценкой.

В итоге одна жиоппа накладывается на другую - ошибаясь с оценкой, данные спиллятся в TempDB, отсюда и тормоза (мое предположение)

Решение:
We need to eliminate exchange (parallelism) iterator from the query plan, so we will run again the query with maxdop 1

Почему 2017 не тупит если maxdop = 0 - там скорей всего другой план.
36 systemstopper
 
07.05.18
08:59
(27) +(35) выложи план на 2017
37 MaximSh
 
07.05.18
10:27
(34) исходный запрос из БСП подсистема Адресный классификатор: Общий модуль АдресныйКлассификаторСлужебный
Процедура ЗаполнитьСписокАвтоподбораЧастиАдресаВнутр


ВЫБРАТЬ ПЕРВЫЕ 300
    АдресныйОбъект.Уровень,
    АдресныйОбъект.КодСубъектаРФ,
    АдресныйОбъект.КодОкруга,
    АдресныйОбъект.КодРайона,
    АдресныйОбъект.КодГорода,
    АдресныйОбъект.КодВнутригородскогоРайона,
    АдресныйОбъект.КодНаселенногоПункта,
    АдресныйОбъект.КодУлицы,
    АдресныйОбъект.КодДополнительногоЭлемента,
    АдресныйОбъект.КодПодчиненногоЭлемента,
    АдресныйОбъект.Идентификатор,
    
    АдресныйОбъект.Наименование,
    АдресныйОбъект.Актуален КАК Актуален,
    АдресныйОбъект.Сокращение,
    
    ВЫБОР КОГДА 1 В (
        ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныеОбъекты
        ГДЕ Уровень = 2 И КодСубъектаРФ = Регион.КодСубъектаРФ
        ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныеОбъекты
        ГДЕ Уровень = 3 И КодСубъектаРФ = Регион.КодСубъектаРФ
        ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныеОбъекты
        ГДЕ Уровень = 4 И КодСубъектаРФ = Регион.КодСубъектаРФ
        ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныеОбъекты
        ГДЕ Уровень = 5 И КодСубъектаРФ = Регион.КодСубъектаРФ
        ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныеОбъекты
        ГДЕ Уровень = 6 И КодСубъектаРФ = Регион.КодСубъектаРФ
        ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныеОбъекты
        ГДЕ Уровень = 7 И КодСубъектаРФ = Регион.КодСубъектаРФ
        ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныеОбъекты
        ГДЕ Уровень = 90 И КодСубъектаРФ = Регион.КодСубъектаРФ
        ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныеОбъекты
        ГДЕ Уровень = 91 И КодСубъектаРФ = Регион.КодСубъектаРФ
    ) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК РегионЗагружен
ПОМЕСТИТЬ
    ПодходящиеОбъекты
ИЗ
    РегистрСведений.АдресныеОбъекты КАК РодительскийОбъект
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.АдресныеОбъекты КАК АдресныйОбъект
ПО
    АдресныйОбъект.Уровень В (&Уровни)
    И АдресныйОбъект.КодСубъектаРФ = РодительскийОбъект.КодСубъектаРФ
    И АдресныйОбъект.Идентификатор <> РодительскийОбъект.Идентификатор
    // Подобие наименование зависит от уровня - на улице включаем поиск по части фразы
    И ВЫБОР
        КОГДА 7 В (&Уровни) ТОГДА
            АдресныйОбъект.Наименование ПОДОБНО &НачалоФразы
            ИЛИ АдресныйОбъект.Наименование ПОДОБНО &НачалоСлова
        КОГДА 90 В (&Уровни) ТОГДА
            АдресныйОбъект.Наименование ПОДОБНО &НачалоФразы
            ИЛИ АдресныйОбъект.Наименование ПОДОБНО &НачалоСлова
        КОГДА 91 В (&Уровни) ТОГДА
            АдресныйОбъект.Наименование ПОДОБНО &НачалоФразы
            ИЛИ АдресныйОбъект.Наименование ПОДОБНО &НачалоСлова
        ИНАЧЕ
            АдресныйОбъект.Наименование ПОДОБНО &НачалоФразы
    КОНЕЦ

    И ВЫБОР
        КОГДА РодительскийОбъект.Уровень = 2 ТОГДА
              АдресныйОбъект.КодОкруга = РодительскийОбъект.КодОкруга
              
        КОГДА РодительскийОбъект.Уровень = 3 ТОГДА
              АдресныйОбъект.КодОкруга = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона = РодительскийОбъект.КодРайона
        
        КОГДА РодительскийОбъект.Уровень = 4 ТОГДА
              АдресныйОбъект.КодОкруга  = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона  = РодительскийОбъект.КодРайона
            И АдресныйОбъект.КодГорода  = РодительскийОбъект.КодГорода
            
        КОГДА РодительскийОбъект.Уровень = 5 ТОГДА
              АдресныйОбъект.КодОкруга  = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона  = РодительскийОбъект.КодРайона
            И АдресныйОбъект.КодГорода  = РодительскийОбъект.КодГорода
            И АдресныйОбъект.КодВнутригородскогоРайона  = РодительскийОбъект.КодВнутригородскогоРайона
            
        КОГДА РодительскийОбъект.Уровень = 6 ТОГДА
              АдресныйОбъект.КодОкруга  = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона  = РодительскийОбъект.КодРайона
            И АдресныйОбъект.КодГорода  = РодительскийОбъект.КодГорода
            И АдресныйОбъект.КодВнутригородскогоРайона  = РодительскийОбъект.КодВнутригородскогоРайона
            И АдресныйОбъект.КодНаселенногоПункта       = РодительскийОбъект.КодНаселенногоПункта
        
        КОГДА РодительскийОбъект.Уровень = 7 ТОГДА
              АдресныйОбъект.КодОкруга  = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона  = РодительскийОбъект.КодРайона
            И АдресныйОбъект.КодГорода  = РодительскийОбъект.КодГорода
            И АдресныйОбъект.КодВнутригородскогоРайона  = РодительскийОбъект.КодВнутригородскогоРайона
            И АдресныйОбъект.КодНаселенногоПункта       = РодительскийОбъект.КодНаселенногоПункта
            И АдресныйОбъект.КодУлицы                   = РодительскийОбъект.КодУлицы
    
        КОГДА РодительскийОбъект.Уровень = 90 ТОГДА
              АдресныйОбъект.КодОкруга  = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона  = РодительскийОбъект.КодРайона
            И АдресныйОбъект.КодГорода  = РодительскийОбъект.КодГорода
            И АдресныйОбъект.КодВнутригородскогоРайона  = РодительскийОбъект.КодВнутригородскогоРайона
            И АдресныйОбъект.КодНаселенногоПункта       = РодительскийОбъект.КодНаселенногоПункта
            И АдресныйОбъект.КодУлицы                   = РодительскийОбъект.КодУлицы
            И АдресныйОбъект.КодДополнительногоЭлемента = РодительскийОбъект.КодДополнительногоЭлемента
        
        КОГДА РодительскийОбъект.Уровень = 91 ТОГДА
              АдресныйОбъект.КодОкруга  = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона  = РодительскийОбъект.КодРайона
            И АдресныйОбъект.КодГорода  = РодительскийОбъект.КодГорода
            И АдресныйОбъект.КодВнутригородскогоРайона  = РодительскийОбъект.КодВнутригородскогоРайона
            И АдресныйОбъект.КодНаселенногоПункта       = РодительскийОбъект.КодНаселенногоПункта
            И АдресныйОбъект.КодУлицы                   = РодительскийОбъект.КодУлицы
            И АдресныйОбъект.КодДополнительногоЭлемента = РодительскийОбъект.КодДополнительногоЭлемента
            И АдресныйОбъект.КодПодчиненногоЭлемента    = РодительскийОбъект.КодПодчиненногоЭлемента
        
        ИНАЧЕ ИСТИНА
    КОНЕЦ
    
    И ВЫБОР
        КОГДА АдресныйОбъект.Уровень = 2 ТОГДА    // Округ
              АдресныйОбъект.КодРайона = 0
            И АдресныйОбъект.КодГорода = 0
            И АдресныйОбъект.КодВнутригородскогоРайона  = 0
            И АдресныйОбъект.КодНаселенногоПункта       = 0
            И АдресныйОбъект.КодУлицы                   = 0
            И АдресныйОбъект.КодДополнительногоЭлемента = 0
            И АдресныйОбъект.КодПодчиненногоЭлемента    = 0
            
        КОГДА АдресныйОбъект.Уровень = 2 ТОГДА    // Район
              АдресныйОбъект.КодОкруга = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодГорода = 0
            И АдресныйОбъект.КодВнутригородскогоРайона  = 0
            И АдресныйОбъект.КодНаселенногоПункта       = 0
            И АдресныйОбъект.КодУлицы                   = 0
            И АдресныйОбъект.КодДополнительногоЭлемента = 0
            И АдресныйОбъект.КодПодчиненногоЭлемента    = 0
            
        КОГДА АдресныйОбъект.Уровень = 4 ТОГДА    // Город
              АдресныйОбъект.КодОкруга = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона = РодительскийОбъект.КодРайона
            И АдресныйОбъект.КодВнутригородскогоРайона  = 0
            И АдресныйОбъект.КодНаселенногоПункта       = 0
            И АдресныйОбъект.КодУлицы                   = 0
            И АдресныйОбъект.КодДополнительногоЭлемента = 0
            И АдресныйОбъект.КодПодчиненногоЭлемента    = 0
            
        КОГДА АдресныйОбъект.Уровень = 5 ТОГДА    // Внутригородской район
              АдресныйОбъект.КодОкруга = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона = РодительскийОбъект.КодРайона
            И АдресныйОбъект.КодГорода = РодительскийОбъект.КодГорода
            И АдресныйОбъект.КодНаселенногоПункта       = 0
            И АдресныйОбъект.КодУлицы                   = 0
            И АдресныйОбъект.КодДополнительногоЭлемента = 0
            И АдресныйОбъект.КодПодчиненногоЭлемента    = 0
        
        КОГДА АдресныйОбъект.Уровень = 6 ТОГДА    // Населенный пункт
              АдресныйОбъект.КодОкруга = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона = РодительскийОбъект.КодРайона
            И АдресныйОбъект.КодГорода = РодительскийОбъект.КодГорода
            И АдресныйОбъект.КодВнутригородскогоРайона  = РодительскийОбъект.КодВнутригородскогоРайона
            И АдресныйОбъект.КодУлицы                   = 0
            И АдресныйОбъект.КодДополнительногоЭлемента = 0
            И АдресныйОбъект.КодПодчиненногоЭлемента    = 0
            
        КОГДА АдресныйОбъект.Уровень = 7 ТОГДА    // Улица
              АдресныйОбъект.КодОкруга = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона = РодительскийОбъект.КодРайона
            И АдресныйОбъект.КодГорода = РодительскийОбъект.КодГорода
            И АдресныйОбъект.КодВнутригородскогоРайона  = РодительскийОбъект.КодВнутригородскогоРайона
            И АдресныйОбъект.КодНаселенногоПункта       = РодительскийОбъект.КодНаселенногоПункта
            И АдресныйОбъект.КодДополнительногоЭлемента = 0
            И АдресныйОбъект.КодПодчиненногоЭлемента    = 0
            
        КОГДА АдресныйОбъект.Уровень = 90 ТОГДА    // Дополнительный
              АдресныйОбъект.КодОкруга = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона = РодительскийОбъект.КодРайона
            И АдресныйОбъект.КодГорода = РодительскийОбъект.КодГорода
            И АдресныйОбъект.КодВнутригородскогоРайона  = РодительскийОбъект.КодВнутригородскогоРайона
            И АдресныйОбъект.КодНаселенногоПункта       = РодительскийОбъект.КодНаселенногоПункта
            И АдресныйОбъект.КодУлицы                   = РодительскийОбъект.КодУлицы
            И АдресныйОбъект.КодПодчиненногоЭлемента    = 0
            
        КОГДА АдресныйОбъект.Уровень = 91 ТОГДА    // Подчиненный
              АдресныйОбъект.КодОкруга = РодительскийОбъект.КодОкруга
            И АдресныйОбъект.КодРайона = РодительскийОбъект.КодРайона
            И АдресныйОбъект.КодГорода = РодительскийОбъект.КодГорода
            И АдресныйОбъект.КодВнутригородскогоРайона  = РодительскийОбъект.КодВнутригородскогоРайона
            И АдресныйОбъект.КодНаселенногоПункта       = РодительскийОбъект.КодНаселенногоПункта
            И АдресныйОбъект.КодУлицы                   = РодительскийОбъект.КодУлицы
            И АдресныйОбъект.КодДополнительногоЭлемента = РодительскийОбъект.КодДополнительногоЭлемента
            
        ИНАЧЕ ИСТИНА
    КОНЕЦ

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.АдресныеОбъекты КАК Регион
ПО
    Регион.Уровень = 1
    И Регион.КодСубъектаРФ              = АдресныйОбъект.КодСубъектаРФ
    И Регион.КодОкруга                  = 0
    И Регион.КодРайона                  = 0
    И Регион.КодГорода                  = 0
    И Регион.КодВнутригородскогоРайона  = 0
    И Регион.КодНаселенногоПункта       = 0
    И Регион.КодУлицы                   = 0
    И Регион.КодДополнительногоЭлемента = 0
    И Регион.КодПодчиненногоЭлемента    = 0
ГДЕ
    РодительскийОбъект.Идентификатор = &Родитель
    И НЕ АдресныйОбъект.Идентификатор ЕСТЬ NULL
УПОРЯДОЧИТЬ ПО
    АдресныйОбъект.Уровень
ИНДЕКСИРОВАТЬ ПО
    АдресныйОбъект.Уровень,
    АдресныйОбъект.КодСубъектаРФ,
    АдресныйОбъект.КодОкруга,
    АдресныйОбъект.КодРайона,
    АдресныйОбъект.КодГорода,
    АдресныйОбъект.КодВнутригородскогоРайона,
    АдресныйОбъект.КодНаселенногоПункта,
    АдресныйОбъект.КодУлицы,
    АдресныйОбъект.КодДополнительногоЭлемента,
    АдресныйОбъект.КодПодчиненногоЭлемента,
    АдресныйОбъект.Идентификатор

;/////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ ПЕРВЫЕ 20
    СубъектРФ.Наименование КАК СубъектРФНаименование,
    СубъектРФ.Сокращение   КАК СубъектРФСокращение,
    
    Округ.Наименование КАК ОкругНаименование,
    Округ.Сокращение   КАК ОкругСокращение,
    
    Район.Наименование КАК РайонНаименование,
    Район.Сокращение   КАК РайонСокращение,
    
    Город.Наименование КАК ГородНаименование,
    Город.Сокращение   КАК ГородСокращение,
    
    ВнутригородскойРайон.Наименование КАК ВнутригородскойРайонНаименование,
    ВнутригородскойРайон.Сокращение   КАК ВнутригородскойРайонСокращение,
    
    НаселенныйПункт.Наименование КАК НаселенныйПунктНаименование,
    НаселенныйПункт.Сокращение   КАК НаселенныйПунктСокращение,
    
    Улица.Наименование КАК УлицаНаименование,
    Улица.Сокращение   КАК УлицаСокращение,
    
    Дополнительный.Наименование КАК ДополнительныйНаименование,
    Дополнительный.Сокращение   КАК ДополнительныйСокращение,
    
    Подчиненный.Наименование КАК ПодчиненныйНаименование,
    Подчиненный.Сокращение   КАК ПодчиненныйСокращение,
    
    АдресныйОбъект.Идентификатор КАК Идентификатор,
    
    АдресныйОбъект.Наименование  КАК Наименование,
    АдресныйОбъект.Сокращение    КАК Сокращение,

    РегионЗагружен КАК РегионЗагружен,
    НЕ АдресныйОбъект.Актуален КАК Неактуален

ИЗ
    ПодходящиеОбъекты КАК АдресныйОбъект
    
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.АдресныеОбъекты КАК СубъектРФ
ПО
    1 В (&Уровни)
    И СубъектРФ.Уровень = 1
    И СубъектРФ.КодСубъектаРФ              = АдресныйОбъект.КодСубъектаРФ
    И СубъектРФ.КодОкруга                  = 0
    И СубъектРФ.КодРайона                  = 0
    И СубъектРФ.КодГорода                  = 0
    И СубъектРФ.КодВнутригородскогоРайона  = 0
    И СубъектРФ.КодНаселенногоПункта       = 0
    И СубъектРФ.КодУлицы                   = 0
    И СубъектРФ.КодДополнительногоЭлемента = 0
    И СубъектРФ.КодПодчиненногоЭлемента    = 0
    И СубъектРФ.Идентификатор <> АдресныйОбъект.Идентификатор

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.АдресныеОбъекты КАК Округ
ПО
    2 В (&Уровни)
    И Округ.Уровень = 2
    И Округ.КодСубъектаРФ              = АдресныйОбъект.КодСубъектаРФ
    И Округ.КодОкруга                  = АдресныйОбъект.КодОкруга
    И Округ.КодРайона                  = 0
    И Округ.КодГорода                  = 0
    И Округ.КодВнутригородскогоРайона  = 0
    И Округ.КодНаселенногоПункта       = 0
    И Округ.КодУлицы                   = 0
    И Округ.КодДополнительногоЭлемента = 0
    И Округ.КодПодчиненногоЭлемента    = 0
    И Округ.Идентификатор <> АдресныйОбъект.Идентификатор

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.АдресныеОбъекты КАК Район
ПО
    3 В (&Уровни)
    И Район.Уровень = 3
    И Район.КодСубъектаРФ              = АдресныйОбъект.КодСубъектаРФ
    И Район.КодОкруга                  = АдресныйОбъект.КодОкруга    
    И Район.КодРайона                  = АдресныйОбъект.КодРайона
    И Район.КодГорода                  = 0
    И Район.КодВнутригородскогоРайона  = 0
    И Район.КодНаселенногоПункта       = 0
    И Район.КодУлицы                   = 0
    И Район.КодДополнительногоЭлемента = 0
    И Район.КодПодчиненногоЭлемента    = 0
    И Район.Идентификатор <> АдресныйОбъект.Идентификатор

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.АдресныеОбъекты КАК Город
ПО
    4 В (&Уровни)
    И Город.Уровень = 4
    И Город.КодСубъектаРФ              = АдресныйОбъект.КодСубъектаРФ
    И Город.КодОкруга                  = АдресныйОбъект.КодОкруга
    И Город.КодРайона                  = АдресныйОбъект.КодРайона
    И Город.КодГорода                  = АдресныйОбъект.КодГорода
    И Город.КодВнутригородскогоРайона  = 0
    И Город.КодНаселенногоПункта       = 0
    И Город.КодУлицы                   = 0
    И Город.КодДополнительногоЭлемента = 0
    И Город.КодПодчиненногоЭлемента    = 0
    И Город.Идентификатор <> АдресныйОбъект.Идентификатор

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.АдресныеОбъекты КАК ВнутригородскойРайон
ПО
    5 В (&Уровни)
    И ВнутригородскойРайон.Уровень = 5
    И ВнутригородскойРайон.КодСубъектаРФ              = АдресныйОбъект.КодСубъектаРФ
    И ВнутригородскойРайон.КодОкруга                  = АдресныйОбъект.КодОкруга
    И ВнутригородскойРайон.КодРайона                  = АдресныйОбъект.КодРайона
    И ВнутригородскойРайон.КодГорода                  = АдресныйОбъект.КодГорода
    И ВнутригородскойРайон.КодВнутригородскогоРайона  = АдресныйОбъект.КодВнутригородскогоРайона
    И ВнутригородскойРайон.КодНаселенногоПункта       = 0
    И ВнутригородскойРайон.КодУлицы                   = 0
    И ВнутригородскойРайон.КодДополнительногоЭлемента = 0
    И ВнутригородскойРайон.КодПодчиненногоЭлемента    = 0
    И ВнутригородскойРайон.Идентификатор <> АдресныйОбъект.Идентификатор

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.АдресныеОбъекты КАК НаселенныйПункт
ПО
    6 В (&Уровни)
    И НаселенныйПункт.Уровень = 6
    И НаселенныйПункт.КодСубъектаРФ              = АдресныйОбъект.КодСубъектаРФ
    И НаселенныйПункт.КодОкруга                  = АдресныйОбъект.КодОкруга
    И НаселенныйПункт.КодРайона                  = АдресныйОбъект.КодРайона
    И НаселенныйПункт.КодГорода                  = АдресныйОбъект.КодГорода
    И НаселенныйПункт.КодВнутригородскогоРайона  = АдресныйОбъект.КодВнутригородскогоРайона
    И НаселенныйПункт.КодНаселенногоПункта       = АдресныйОбъект.КодНаселенногоПункта
    И НаселенныйПункт.КодУлицы                   = 0
    И НаселенныйПункт.КодДополнительногоЭлемента = 0
    И НаселенныйПункт.КодПодчиненногоЭлемента    = 0
    И НаселенныйПункт.Идентификатор <> АдресныйОбъект.Идентификатор

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.АдресныеОбъекты КАК Улица
ПО
    7 В (&Уровни)
    И Улица.Уровень = 7
    И Улица.КодСубъектаРФ              = АдресныйОбъект.КодСубъектаРФ
    И Улица.КодОкруга                  = АдресныйОбъект.КодОкруга
    И Улица.КодРайона                  = АдресныйОбъект.КодРайона
    И Улица.КодГорода                  = АдресныйОбъект.КодГорода
    И Улица.КодВнутригородскогоРайона  = АдресныйОбъект.КодВнутригородскогоРайона
    И Улица.КодНаселенногоПункта       = АдресныйОбъект.КодНаселенногоПункта
    И Улица.КодУлицы                   = АдресныйОбъект.КодУлицы
    И Улица.КодДополнительногоЭлемента = 0
    И Улица.КодПодчиненногоЭлемента    = 0
    И Улица.Идентификатор <> АдресныйОбъект.Идентификатор

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.АдресныеОбъекты КАК Дополнительный
ПО
    90 В (&Уровни)
    И Дополнительный.Уровень = 90
    И Дополнительный.КодСубъектаРФ              = АдресныйОбъект.КодСубъектаРФ
    И Дополнительный.КодОкруга                  = АдресныйОбъект.КодОкруга
    И Дополнительный.КодРайона                  = АдресныйОбъект.КодРайона
    И Дополнительный.КодГорода                  = АдресныйОбъект.КодГорода
    И Дополнительный.КодВнутригородскогоРайона  = АдресныйОбъект.КодВнутригородскогоРайона
    И Дополнительный.КодНаселенногоПункта       = АдресныйОбъект.КодНаселенногоПункта
    И Дополнительный.КодУлицы                   = АдресныйОбъект.КодУлицы
    И Дополнительный.КодДополнительногоЭлемента = АдресныйОбъект.КодДополнительногоЭлемента
    И Дополнительный.КодПодчиненногоЭлемента    = 0
    И Дополнительный.Идентификатор <> АдресныйОбъект.Идентификатор

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.АдресныеОбъекты КАК Подчиненный
ПО
    91 В (&Уровни)
    И Подчиненный.Уровень = 91
    И Подчиненный.КодСубъектаРФ              = АдресныйОбъект.КодСубъектаРФ
    И Подчиненный.КодОкруга                  = АдресныйОбъект.КодОкруга
    И Подчиненный.КодРайона                  = АдресныйОбъект.КодРайона
    И Подчиненный.КодГорода                  = АдресныйОбъект.КодГорода
    И Подчиненный.КодВнутригородскогоРайона  = АдресныйОбъект.КодВнутригородскогоРайона
    И Подчиненный.КодНаселенногоПункта       = АдресныйОбъект.КодНаселенногоПункта
    И Подчиненный.КодУлицы                   = АдресныйОбъект.КодУлицы
    И Подчиненный.КодДополнительногоЭлемента = АдресныйОбъект.КодДополнительногоЭлемента
    И Подчиненный.КодПодчиненногоЭлемента    = АдресныйОбъект.КодПодчиненногоЭлемента
    И Подчиненный.Идентификатор <> АдресныйОбъект.Идентификатор

УПОРЯДОЧИТЬ ПО
    АдресныйОбъект.Уровень,
    ПодчиненныйНаименование,
    ДополнительныйНаименование,
    УлицаНаименование,
    НаселенныйПунктНаименование,
    ВнутригородскойРайонНаименование,
    ГородНаименование,
    РайонНаименование,
    ОкругНаименование,
    СубъектРФНаименование


Параметры конкретного запроса:
НачалоСлова    "% ЧЕТ%"     Строка
НачалоФразы    "ЧЕТ%"      Строка
Родитель    93b3df57-4c89-44df-ac42-96f05e9cd3b9    УникальныйИдентификатор
Уровни    Массив    
7,90,91
38 MaximSh
 
07.05.18
10:36
(36) план в SQL 2017 14.0.1000.169
https://cloud.mail.ru/public/9aqj/wtBTuLEC5
39 systemstopper
 
07.05.18
10:47
(38) Ты не тот план выложил. Нужно не топ 300, а топ 20
40 systemstopper
 
07.05.18
10:49
он после выполняется
41 MaximSh
 
07.05.18
10:52
42 systemstopper
 
07.05.18
11:03
(41) Так у тебя DOP = 1 на 2017. И везде Act = Est = 1. Всё пучком.
43 systemstopper
 
07.05.18
11:05
+(42) Поставь DOP=1 на 2014 и выложи план
44 MaximSh
 
07.05.18
11:06
(42) ха, а в настройках SQL 2017 Максимальная степень параллелизма =0
45 systemstopper
 
07.05.18
11:10
(44) Но выполнился он с DOP = 1

CardinalityEstimationModelVersion="140">
          <QueryPlan DegreeOfParallelism="1"
46 MaximSh
 
07.05.18
11:20
(43) https://cloud.mail.ru/public/8Tor/pkzsXpb37
план в SQL 2014 c MDOP=1

по сути варианты решения
1) оставить MDOP=1 в SQL 2014
2) очистить регион 02 из классификатора
3) перейти на SQL 2017
47 systemstopper
 
07.05.18
11:22
(46) Сколько cost threshold for parallelism для 2014 и 2017?
48 systemstopper
 
07.05.18
11:23
(46) Что-то не то ты выложил. Выложи в Sqlplan, как предыдущие планы
49 MaximSh
 
07.05.18
11:27
50 MaximSh
 
07.05.18
11:30
(47) одинаков и равен 5
51 systemstopper
 
07.05.18
11:34
(50) У тебя на 2017 параллелизм не задействовался, потому что стоимость запроса посчитал 0.44, а на 2014 109609000
52 systemstopper
 
07.05.18
11:48
(50) На 2014 так же лажается с оценкой кардинальности при DOP = 1. Поэтому и стоимость считает высокой и включает параллелизм. В чем причина - хз. Может в том что включает merge join many-to-many в 3-х соединениях, а на 2017 там Nested Loops. Но при DOP = 1 не спулит в tempdb, может за счет это быстрее.

Похоже на глюк скуля.
На 2014 все сервис-паки и апдейты поставлены?

Лучше конечно на 2016 перейти, 2017 официально не поддерживается.
53 systemstopper
 
07.05.18
11:52
В 2017 ввели адаптивную оптимизацию запросов и много других улучшений. Но мне кажется что и 2016 не будет тупить с оценкой.
54 MaximSh
 
07.05.18
14:09
(52) SQL 2014 последний билд.

Спасибо, перейду на 2016.
55 H A D G E H O G s
 
07.05.18
14:20
Меня вот одно интересует - это типовая шняга?
56 timurhv
 
07.05.18
20:24
(55) Не скажу что это 100% ответ на данную проблему, информация с ИТС:
https://its.1c.ru/db/metod8dev#content:5904:hdoc
57 timurhv
 
07.05.18
20:26
+ (56) Я лично сразу включал флаги трассировки:
-T4199
-T1118

Падения не наблюдал, сравнивать не с чем.
58 Tateossian
 
07.05.18
20:48
(46) 1С в процессе работы меняет MAXDOP в хинтах оптимизатору, лично были такие замечены:

WITH(NOLOCK)
WITH(TABLOCK)

  | FAST 1
  | FORCE ORDER  
  | MAXDOP

Поэтому, нет особо смысла менять, 1С указания дает дополнительно.
59 systemstopper
 
07.05.18
20:54
(58) ЛОЛ, и какие же указания дало это ваше 1С когда данные при паралеллизме начали спилиться в темпдб?)))
60 MaximSh
 
09.05.18
09:14
SQL 2016 build последний 13.0.5026.0 при MDOP=0 также все плохо, 11,5 сек выполнение запроса поиска улицы про первым трем буквам "dfk". В результате 0 строк.
план: https://cloud.mail.ru/public/7Mr7/uEGgHiEBx
Если искать "гск", в результате 20 строк за 0,036 сек

В работе оставил MDOP=1

Когда 1С заявит совместимость с SQL 2017 проверю что стало там.