Eu tenho uma tabela grande, cerca de 750 milhões de linhas.
Eu tenho um aplicativo usando Entity Framework
para carregar e analisar dados, uma consulta que retorna 2 milhões de linhas leva 4 segundos.
A mesma consulta exata leva 8 segundos usando SQL Server Management Studio
.
Percebi que isso acontece com outras consultas (que retornam grandes conjuntos de dados). Ambas as conexões estão usando TCP/IP
.
Ao incluir as estatísticas do cliente, vejo esta linha (não faço ideia do que isso significa):
Tempo de processamento do cliente 2539 2539.0000
Por que uma SSMS
consulta seria mais lenta?
O tempo de processamento do cliente é a quantidade de tempo gasto em milissegundos entre o primeiro pacote de resposta recebido e o último pacote de resposta recebido pelo cliente.
Quando você executa a consulta no SSMS, ela renderiza os dados linha por linha na GUI. Seu aplicativo não faz isso.
Definir a opção SSMS para
Discard results after execution
eliminará o tempo gasto na renderização dos resultados para a grade, o que deve fornecer um tempo de execução comparável:O SSMS renderiza os dados recuperados de sua consulta em uma grade e busca alguns metadados sobre a consulta (linhas afetadas, duração, etc.). Esses recursos e a renderização do datagrid podem fazer com que uma consulta termine mais lentamente no SSMS do que diretamente no código .Net, que não possui uma parte de renderização e apenas recupera uma tabela de dados/conjunto de dados.