2016-05-05 13 views
2

Ich habe eine folgende Abfrage, die Volltextindizes auf SQLAzure-Datenbank verwendet.SQLAzure Volltext intermittierend langsam

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)) 

Die Abfrage läuft immer sehr schnell, wenn ich es von SQL Management Studio aus ausführen. Aber wenn ich es von der Anwendung aus starte, ist es so schnell wie von Management Studio, aber manchmal wird es 10 mal langsamer (und die nächste Abfrage ist wieder schnell).

Was könnte diese intermittierende Langsamkeit verursachen?

Ich fand einen Beitrag, der ähnliche Symptome hier beschreibt: Fulltext search slow SQL V12 Azure aber hat kein bestimmtes Ergebnis oder eine Empfehlung.

+0

Vielleicht ist es die Art der gemeinsamen Umgebung von Azure SQL-Datenbank? Manchmal sind die Ressourcen beschäftigt. – RichardCL

Antwort

0

Volltextsuche in Azure SQL Die DB ist so implementiert, dass sie die Ressourcen zwischen der SQL Engine und dem Volltextsuchprozess gemeinsam nutzt.

Jedes Mal, wenn eine Volltextsuche zum ersten Mal ausgeführt wird, müssen die Ressourcen dem Prozess zugewiesen werden und es dauert daher einige Zeit von der Ausführung.

Wir arbeiten daran, dass diese Erfahrung so nahtlos wie möglich ist.

Danke, Luis

+0

Danke Luis für deine Antwort. Was können wir von unserer Seite aus tun, um dies so weit wie möglich zu reduzieren? Oder warte einfach, bis es sich mit der weiteren Implementierung aus dem SQLAzure-Team verbessert? – jabko87

+0

Eine der besten Methoden wäre es, alle FTS-Operationen sequenziell auszuführen, um die Verzögerung durch die Zuweisung von Ressourcen zu minimieren. –

+0

Ja, aber wenn ich es richtig verstehe, wird die erste FTS-Operation langsam sein. Wie man diese "erste Frage" Langsamkeit mildert? – jabko87