Vários fatores podem influenciar no tempo que uma consulta leva pra ser executada no banco de dados. Dentre esses fatores estão a falta (ou má utilização) de índices, a quantidade de registros, ou até mesmo a complexidade da QUERY.
Mas se a QUERY leva menos tempo para executar no SSMS (Sql Server Management Studio) do que no LATROMI, o problema pode estar nas opções que são configuradas por padrão no SSMS e que não foram configuradas na aplicação. Geralmente, a opção que faz a diferença nesse caso é ARITHABORT :
The default ARITHABORT setting for SQL Server Management Studio is ON. Client applications setting ARITHABORT to OFF might receive different query plans, making it difficult to troubleshoot poorly performing queries. That is, the same query might execute fast in management studio but slow in the application. When troubleshooting queries with Management Studio, always match the client ARITHABORT setting.
Habilite essa opção antes da chamada da QUERY ou STORED PROCEDURE:
SET ARITHABORT ON
OBS.: Use a ferramenta SQL Server Profiler para verificar as opções configuradas para cada aplicação.
Usando SET ARITHABORT
em comando SELECT
SET ARITHABORT ON
SELECT
Orders.OrderID,
SUM((UnitPrice * Quantity) - Discount) AS UnitPriceTotal
FROM [Order Details]
INNER JOIN Orders ON Orders.OrderID = [Order Details].OrderID
WHERE OrderDate BETWEEN '2017-01-01' AND '2017-12-31'
GROUP BY Orders.OrderID
Usando SET ARITHABORT
em uma STORED PROCEDURE
.
SET ARITHABORT ON
EXEC SP_GET_ORDERS_SUMMARY '2017-01-01', '2017-12-31'