sql >> Base de Datos >  >> RDS >> Sqlserver

La misma consulta SQL tarda más en ejecutarse en una base de datos que en otra base de datos en el mismo servidor

El hecho de que tenga dos bases de datos en el mismo servidor y con el mismo conjunto de datos (como dijo) no garantiza el mismo plan de ejecución.

Estas son algunas de las razones por las que el plan de consulta puede ser diferente:

  • Los archivos mdf y ldf (para cada base de datos) están en unidades diferentes. Si onedrives es más rápido, esa base de datos también ejecutará la consulta más rápido.
  • estadísticas estancadas. Si tiene una base de datos con estadísticas más nuevas que la otra, SQL tiene más posibilidades de elegir un plan de ejecución adecuado (y
    más rápido).
  • Índices:sé que dijiste que ambos son idénticos, pero verificaría si tienes el mismo tipo de índices en ambos.

Concéntrese en ver por qué la consulta se ejecuta lentamente o vea el plan de ejecución real, en lugar de comparar. Verificar el plan de ejecución real para la consulta lenta le dará una pista de por qué se está ejecutando más lentamente.

Además, no agregaría una declaración NO LOCK para solucionar el problema. En mi experiencia, la mayoría de las consultas lentas se pueden ajustar a través de código o índice, en lugar de agregar una sugerencia de NO BLOQUEO que puede hacer que se modifiquen o se obtengan conjuntos de resultados antiguos, según sus transacciones.