Query mais rápida no SQL Server Management Studio do que no LATROMI

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'
1 curtida