Mudanças entre as edições de "Solução de Problemas do SQL Server"
(Criou página com ': https://stackoverflow.com/questions/801909/why-is-some-sql-query-much-slower-when-used-with-sqlcommand : https://docs.microsoft.com/pt-br/sql/t-sql/statements/set-arithabort...') |
|||
Linha 1: | Linha 1: | ||
− | : https://stackoverflow.com/questions/801909/why-is-some-sql-query-much-slower-when-used-with-sqlcommand | + | Esse artigo fornece algumas dicas para lidar com problemas do SQL Server, que podem afetar a utilização do LATROMI. |
− | + | ||
+ | == Query executa mais rápido no SSMS do que no LATROMI == | ||
+ | Vários fatores podem influenciar na 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 é [https://docs.microsoft.com/pt-br/sql/t-sql/statements/set-arithabort-transact-sql?view=sql-server-2017 SET ARITHABORT = ON]. | ||
+ | |||
+ | Habilite essa opção antes da chamada da QUERY ou STORED PROCEDURE. | ||
+ | |||
+ | ''OBS.: Use a ferramenta Profiler para comparar as diferença entre as opções configuradas no SSMS e em outras aplicações.'' | ||
+ | |||
+ | === Exemplos === | ||
+ | |||
+ | ==== SELECT ==== | ||
+ | <source lang="sql"> | ||
+ | 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 | ||
+ | </source> | ||
+ | |||
+ | ==== STORED PROCEDURE ==== | ||
+ | <source lang="sql"> | ||
+ | SET ARITHABORT = ON | ||
+ | |||
+ | EXEC SP_GET_ORDERS_SUMMARY '2017-01-01', '2017-12-31' | ||
+ | </source> | ||
+ | |||
+ | == Ver Também == | ||
+ | * [https://stackoverflow.com/questions/801909/why-is-some-sql-query-much-slower-when-used-with-sqlcommand Why is some sql query much slower when used with SqlCommand?] | ||
+ | * [https://docs.microsoft.com/pt-br/sql/t-sql/statements/set-arithabort-transact-sql?view=sql-server-2017 SET ARITHABORT (Transact-SQL)] |
Edição das 15h19min de 18 de julho de 2018
Esse artigo fornece algumas dicas para lidar com problemas do SQL Server, que podem afetar a utilização do LATROMI.
Índice
Query executa mais rápido no SSMS do que no LATROMI
Vários fatores podem influenciar na 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 é SET ARITHABORT = ON.
Habilite essa opção antes da chamada da QUERY ou STORED PROCEDURE.
OBS.: Use a ferramenta Profiler para comparar as diferença entre as opções configuradas no SSMS e em outras aplicações.
Exemplos
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
STORED PROCEDURE
SET ARITHABORT = ON EXEC SP_GET_ORDERS_SUMMARY '2017-01-01', '2017-12-31'