КОД СЕРВЕРА SQL для ТЕКСТА Поиск из одной таблицы с идентификатором клиента и другой таблицей - PullRequest
0 голосов
/ 14 января 2019

У меня есть код ниже, но он работает очень медленно. Не могли бы вы дайте мне знать о ваших предложениях?

SELECT TOP (1000) [W].[CUST] 
,[M].[Add_Text]
    FROM [XXXX].[dbo].[CUST] AS W
    JOIN [XXXX].[dbo].[TRANS] As M
        ON [M].[Add_Text] LIKE '%' + [W].[CUST] + '%'

Итак, он ищет любые записи CUST в таблице CUST и сопоставляет их с Add_Text, поскольку идентификаторы встроены как часть Add_Text, и нет другого способа присоединиться к этим таблицам.

Спасибо за ваше время.

1 Ответ

0 голосов
/ 14 января 2019

Основной причиной является эта часть LIKE '%' + [W].[CUST] + '%'

Это не SARGable , что означает, что индекс не может быть использован. См. этот блог о том, почему это медленно.

Вы можете ускорить это, удалив ведущий %, если вам не нужны предыдущие нечеткие совпадения.

Кроме этого, нам нужно увидеть план выполнения. Но вот некоторые случайные потенциалы:

  • Устаревшая статистика
  • Сервер меньшего размера (память / процессор)
  • Внутренняя фрагментация
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...