Il fatto di avere due database sullo stesso server e con lo stesso set di dati (come hai detto tu) non garantisce lo stesso piano di esecuzione.
Ecco alcuni dei motivi per cui il piano di query potrebbe essere diverso:
- I file mdf e ldf (per ogni database) si trovano su unità diverse. Se onedrives è più veloce, anche quel database eseguirà la query più velocemente.
- statistiche in stallo. Se hai un database con statistiche più recenti rispetto all'altro, SQL ha maggiori possibilità di scegliere un piano di esecuzione corretto (e
più veloce). - Indici:so che hai detto che sono entrambi identici, ma vorrei controllare se hai lo stesso tipo di indici su entrambi.
Concentrati sul motivo per cui la query è lenta o sul piano di esecuzione effettivo, invece di confrontare. Il controllo del piano di esecuzione effettivo per la query lenta ti darà un'idea del motivo per cui l'esecuzione è più lenta.
Inoltre, non aggiungerei un'istruzione NO LOCK per risolvere il problema. In base alla mia esperienza, la maggior parte delle query lente può essere ottimizzata tramite codice o indice, invece di aggiungere un suggerimento NO LOCK che potrebbe farti modificare o ottenere vecchi set di risultati, a seconda delle tue transazioni.