+5 votos
71 visitas

Estou utilizando as propriedades MaximumRows e StartRowIndex da class Benner.Tecnologia.Common.Criteria para delimitar respectivamente o número máximo de registros e o registro inicial da consultas realizadas.

Essas propriedades alteram o SQL gerado para o banco de dados ou são tratadas em memória pelo próprio BEF?

por (230 pontos) | 71 visitas

1 Resposta

+2 votos
Melhor resposta

São tratadas em memória.

Nós não fazemos nenhuma alteração no comando SQL ao configurar estas proprieades. Apenas limitamos o número de registros retornados. No caso da MaximumRows, são feitos Reads no DataReader até atingir o numero de registros especificado. Não são carregados em memória os registros excedentes.

por (865 pontos)
selecionada por
Como alternativa, é possível utilizar o comando SQL OFFSET-FETCH no SQL Server 2012 (http://technet.microsoft.com/pt-br/library/gg699618(v=sql.110).aspx)
Anotei esta sugestão no nosso backlog. Obrigado.
O OFFSET e FETCH também são suportados em Oracle. Nas versões anteriores do SQL não são suportados, mas existe a opção de fazer com sub-select:

SELECT *
  FROM (SELECT ROW_NUMBER() OVER (ORDER BY E.HANDLE) POSICAO,
               E. *
          FROM ESTADOS E) AS TABELA
  WHERE POSICAO > 10 AND POSICAO <= 20

Obs.: Esta opção aumenta o custo de processamento no banco de dados. Em tabelas com muitos registros pode ser lento caso não hajam filtros.

Perguntas relacionadas

+5 votos
1 resposta
perguntado 20 Fev, 2015 por rodolfo.dias (22 pontos) | 147 visitas
+7 votos
1 resposta
perguntado 7 Mai, 2014 por Rafael Leonhardt (255 pontos) | 103 visitas
+9 votos
1 resposta
Melhores Aug 2025
    200 pontos
    Melhores 2025 Jul 28 - Aug 03
    1. Larson

      156 Pontos

    2. danilo.pereira

      96 Pontos

    3. danilo.pereira

      96 Pontos

    4. danilo.pereira

      96 Pontos

    5. luciano.fronza

      61 Pontos

    6. luciano.fronza

      61 Pontos

    7. luciano.fronza

      61 Pontos

    8. diuari.molinari

      52 Pontos

    9. diuari.molinari

      51 Pontos

    10. diuari.molinari

      51 Pontos

    517 perguntas
    566 respostas
    389 comentários
    704 usuários