powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Условие LIKE: с ESCAPE - долго, без ESCAPE - быстро.
6 сообщений из 6, страница 1 из 1
Условие LIKE: с ESCAPE - долго, без ESCAPE - быстро.
    #39665297
vs84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Дано:
- MS SQL 2008 R2

Таблицы:
Имя SQL Количество строк
_Reference128 52 046
_Document309 597 719
_Reference162 68 340

Фрагментации индексов нет (не более 5%), статистика свежая.
Это база конфигурации 1С:Предприятия, следовательно возможности влиять на sql-запрос ограничены.

Есть запрос:

SELECT TOP 40
T1._IDRRef,
T2._Fld20671RRef,
T3._Fld3170,
T4._Fld3964RRef
FROM dbo._Document309 T1
LEFT OUTER JOIN dbo._InfoRg20669 T2
ON (0x08 = T2._Fld20670_TYPE AND 0x00000135 = T2._Fld20670_RTRef AND T1._IDRRef = T2._Fld20670_RRRef)
LEFT OUTER JOIN dbo._Reference128 T3
ON T1._Fld7737RRef = T3._IDRRef
LEFT OUTER JOIN dbo._Reference162 T4
ON T1._Fld7731RRef = T4._IDRRef
WHERE (T3._Fld3170 LIKE '%9701074127%' ESCAPE '/')
-ORDER BY (T1._Date_Time), (T1._IDRRef)

Выполняется 3 сек (план во вложении).

Если в условии убрать ESCAPE '/', то время выполнения становится 0,3 сек (план во вложении).
Конструкцию ESCAPE добавляет сама платформа.

Разница в результатах с использованием ESCAPE и без мне понятна, но я готов пренебречь ей ради ускорения.

Собственно, вопросы:
- Это вообще нормально? Такая разница.
- Можно ли добиться ускорения, без изменения текста запроса.
- Как крайняя мера (сразу оговорюсь, я к mssql достаточно посторонний) есть идея: для нужных мне запросов чистить ESCAPE из запросов - это если в mssql есть событие, в котором мы можем перехватить текст запроса до его исполнения и изменить его (далее выполнится измененный). Такое возможно?
...
Рейтинг: 0 / 0
Условие LIKE: с ESCAPE - долго, без ESCAPE - быстро.
    #39665336
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs84- Это вообще нормально? Такая разница.Да. Разница из-за отличия в оценке количества строк для предиката like с и без escape.
vs84Можно ли добиться ускорения, без изменения текста запроса.Вряд ли.
Есть методы, но они затронут весь сервер (или БД), а не конкретныый запрос.
Хотя, можете попробовать вот это - https://docs.microsoft.com/ru-ru/sql/relational-databases/performance/specify-query-parameterization-behavior-by-using-plan-guides?view=sql-server-2017
vs84для нужных мне запросов чистить ESCAPE из запросов - это если в mssql есть событие, в котором мы можем перехватить текст запроса до его исполнения и изменить его (далее выполнится измененный). Такое возможно?Нет.
...
Рейтинг: 0 / 0
Условие LIKE: с ESCAPE - долго, без ESCAPE - быстро.
    #39665347
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удивляет условие, накладываемое на правую таблицу LEFT JOINа в WHERE.
Это какая-то неправильная "платформа".
Хотя, наверно, им было лень формировать ещё и отдельные тексты для INNER JOIN и LEFT OUTER JOIN...
...
Рейтинг: 0 / 0
Условие LIKE: с ESCAPE - долго, без ESCAPE - быстро.
    #39665360
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapУдивляет условие, накладываемое на правую таблицу LEFT JOINа в WHERE.
Это какая-то неправильная "платформа".
Хотя, наверно, им было лень формировать ещё и отдельные тексты для INNER JOIN и LEFT OUTER JOIN...
так судя по тексту 1С :)
...
Рейтинг: 0 / 0
Условие LIKE: с ESCAPE - долго, без ESCAPE - быстро.
    #39665366
vs84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm, спасибо.
...
Рейтинг: 0 / 0
Условие LIKE: с ESCAPE - долго, без ESCAPE - быстро.
    #39665487
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs84,

никогда не пользовался, с ESCAPE действительно намного дольше работает запрос. Кроме как подпилить 1С нет вариантов.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Условие LIKE: с ESCAPE - долго, без ESCAPE - быстро.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]