Uma alternativa aos cursores


Uma funcionalidade que existe no SQL Server é a capacidade de iterar pelos resultados de uma consulta através de cursores. Não sou especialista em SQL Server, mas sei que a sua utilização degrada consideravelmente a performance. Talvez se utilizá-lo em uma quantidade pequena de informações, ele pode executar bem, mas não sei ao o impacto que isso causa, devido aos recursos do sistema que ele utiliza para fazer funcionar.

Como havia a necessidade de melhorar o resultado de um relatório extremamente complexo, e as alternativas em T-SQL já estavam esgotadas, a solução foi recriar a Stored Procedure utilizando o .NET. Sustituimos os cursores por SqlDataReaders, e a diferença foi bastante significativa. E ainda nem precisei abrir mão da segurança, já que o Assembly com a Stored Procedure gerenciada, foi catalogado com o nível de segurança definido como Safe.

6 comentários sobre “Uma alternativa aos cursores

    • Boas Raphael,

      Ao utilizar uma linguagem genuína, como o C#/VB.NET, você tem bem mais flexibilidade do que utilizar uma linguagem de banco.

      Em alguns cenários, pode não ser a melhor saída. Neste caso, mesmo com todo o overhead de ter uma SP gerenciada, o ganho foi muito alto.

    • Opa Israel, vira e mexe estou utilizando seus posts como referência para estudo.
      Com relação aos cursores realmente não não para usar e em alguns ambientes os DBAs simplesmente proibem hehehe O que costumo utilizar é criar não uma tabela temporária mas sim uma variável do tipo TABLE e aí sim fazer um WHILE nos registros desta variável. Grande abraço !!

Deixe uma resposta para Cassiano Kuss Cancelar resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s