sql >> Databasteknik >  >> RDS >> Sqlserver

Samma SQL-fråga tar längre tid att köra i en DB än en annan DB under samma server

Det faktum att du har två databaser på samma server och med samma datauppsättning (som du sa) garanterar inte samma exekveringsplan.

Här är några av anledningarna till att frågeplanen kan vara annorlunda:

  • mdf- och ldf-filer (för varje databas) finns på olika enheter. Om onedrives är snabbare kommer databasen att köra frågan snabbare också.
  • stoppad statistik. Om du har en databas med nyare statistik än den andra har SQL bättre chanser att välja en korrekt (och
    snabbare) exekveringsplan.
  • Index:Jag vet att du sa att de båda är identiska, men jag skulle kontrollera om du har samma typ av index på båda.

Fokusera på att se varför frågan går långsamt eller se den faktiska exekveringsplanen, istället för att jämföra. Genom att kontrollera den faktiska exekveringsplanen för den långsamma frågan kommer du att få en fingervisning om varför det går långsammare.

Dessutom skulle jag inte lägga till ett NO LOCK-uttalande för att lösa problemet. Enligt min erfarenhet kan de flesta långsamma frågor ställas in via kod eller index, istället för att lägga till ett NO LOCK-tips som kan få dig att ändra eller gamla resultatuppsättningar, beroende på dina transaktioner.



  1. Är mysql_insert_id-tråden säker?

  2. Oracle-anslutningar brutna i SSIS efter avinstallation av 32-bitarsversionen av Oracle-klienten

  3. Hur söker jag från serialize-fältet i mysql-databasen?

  4. Anaconda 3.5 (64bit Windows) Installera cx_Oracle