Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Die Ausführung derselben SQL-Abfrage in einer Datenbank dauert länger als in einer anderen Datenbank unter demselben Server

Die Tatsache, dass Sie zwei Datenbanken auf demselben Server und mit demselben Datensatz haben (wie Sie sagten), garantiert nicht denselben Ausführungsplan.

Hier sind einige der Gründe, warum der Abfrageplan unterschiedlich sein kann:

  • mdf- und ldf-Dateien (für jede Datenbank) befinden sich auf unterschiedlichen Laufwerken. Wenn onedrives schneller ist, führt diese Datenbank die Abfrage auch schneller aus.
  • ins Stocken geratene Statistiken. Wenn Sie eine Datenbank mit neueren Statistiken als die andere haben, hat SQL bessere Chancen, einen geeigneten (und
    schnelleren) Ausführungsplan auszuwählen.
  • Indizes:Ich weiß, dass Sie gesagt haben, dass beide identisch sind, aber ich würde prüfen, ob Sie auf beiden dieselbe Art von Indizes haben.

Konzentrieren Sie sich darauf, herauszufinden, warum die Abfrage langsam ausgeführt wird, oder sehen Sie sich den tatsächlichen Ausführungsplan an, anstatt zu vergleichen. Wenn Sie den tatsächlichen Ausführungsplan für die langsame Abfrage überprüfen, erhalten Sie einen Hinweis darauf, warum die Abfrage langsamer ausgeführt wird.

Außerdem würde ich keine NO LOCK-Anweisung hinzufügen, um das Problem zu beheben. Meiner Erfahrung nach können die meisten langsamen Abfragen über Code oder Index optimiert werden, anstatt einen NO LOCK-Hinweis hinzuzufügen, der Sie abhängig von Ihren Transaktionen zu geänderten oder alten Ergebnismengen führen kann.