2016-05-05 3 views
2

У меня есть следующий запрос, который использует полнотекстовые индексы в базе данных SQLAzure.SQLAzure fulltext intermittent slow

SELECT 
    * 
FROM 
    {table} T 
WHERE 
    CONTAINS(T.Column, @Search) 
    OR EXISTS(
     SELECT NULL 
     FROM {anotherTable} AT 
     WHERE AT.Id = T.AnotherTableId AND CONTAINS(AT.Name, @Search)) 

Запрос выполняется очень быстро всегда, если я запускаю его из SQL Management Studio. Но если я запускаю его из приложения, он работает так же быстро, как и с Management Studio, но иногда он получает 10 раз медленнее (и следующий запрос выполняется быстро).

Что может вызвать эту прерывистую медлительность?

Я нашел одно сообщение, которое описывает похожие симптомы здесь: Fulltext search slow SQL V12 Azure, но не имеет определенного результата или рекомендации.

+0

Может быть, это природа разделяемой среде Azure SQL базы данных? Иногда ресурсы заняты. – RichardCL

ответ

0

Полнотекстовый поиск по Azure SQL DB реализован таким образом, что он разделяет ресурсы между SQL Engine и процессом полнотекстового поиска.

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

Мы работаем над тем, чтобы этот опыт был максимально бесшовным.

Спасибо, Луис

+0

Спасибо Луису за ваш ответ. Что мы можем сделать с нашей стороны, чтобы максимально смягчить это? Или просто подождите, пока это улучшится с дальнейшей реализацией от команды SQLAzure? – jabko87

+0

Одна из лучших практик заключается в том, чтобы выполнять все операции FTS как последовательно, чтобы свести к минимуму задержку с распределением ресурсов. –

+0

Да, но если я правильно понял, первая операция FTS будет медленной. Как смягчить этот «первый запрос» медлительность? – jabko87

Смежные вопросы