sql >> Database >  >> RDS >> Sqlserver

Het duurt langer om dezelfde SQL-query in de ene DB uit te voeren dan in een andere DB onder dezelfde server

Het feit dat je twee databases op dezelfde server en met dezelfde dataset hebt (zoals je zei) garandeert niet hetzelfde uitvoeringsplan.

Hier zijn enkele van de redenen waarom het zoekplan anders kan zijn:

  • mdf- en ldf-bestanden (voor elke database) staan ​​op verschillende stations. Als onedrives sneller is, zal die database de query ook sneller uitvoeren.
  • statistieken vastgelopen. Als je de ene database hebt met nieuwere statistieken dan de andere, heeft SQL betere kansen om een ​​juist (en
    sneller) uitvoeringsplan te kiezen.
  • Indexen:ik weet dat je zei dat ze allebei identiek zijn, maar ik zou controleren of je op beide hetzelfde type indexen hebt.

Concentreer u op het zien waarom de query traag is of bekijk het daadwerkelijke uitvoeringsplan, in plaats van te vergelijken. Als u het daadwerkelijke uitvoeringsplan voor de langzame query controleert, krijgt u een idee waarom deze langzamer werkt.

Ik zou ook geen NO LOCK-instructie toevoegen om het probleem op te lossen. In mijn ervaring kunnen de meeste langzame zoekopdrachten worden aangepast via code of index, in plaats van een NO LOCK-hint toe te voegen die u mogelijk gewijzigde of oude resultatensets oplevert, afhankelijk van uw transacties.



  1. Groeperen op max(time) mysql

  2. ANSI 1992 JOIN's en COMMA's mengen in een query

  3. Android Sqlite onupgrade verwijder tabel uit database

  4. Een tekenreeks converteren naar een datum/tijd in SQL Server met PARSE()