Изменение количества столбцов в спящем режиме с помощью весенней загрузки - PullRequest
0 голосов
/ 05 июня 2018

Сегодня я использую этот код для подсчета выбора в моей БД

total = protocoloRepository.count(
                    Specifications.where(ProtocoloSpecification.withNumero(filtro.getNumero()))
                            .and(ProtocoloSpecification.withTipo(filtro.getTipoProtocolo()))
                            .and(ProtocoloSpecification.withAndamento(filtro.getAndamento()))
                            .and(ProtocoloSpecification.withNatureza(filtro.getNatureza()))
                            .and(ProtocoloSpecification.withCliente(filtro.getCliente()))
                            .and(ProtocoloSpecification.withDataBetween(filtro.getCampoData(), filtro.getDtInicial(), filtro.getDtFinal()))

                    );
            return total.intValue();

, но этот код генерирует этот sql:

Hibernate: 
    select
        count(protocolo0_.id) as col_0_0_ 
    from
        protocolo protocolo0_ 
    where
        (
            protocolo0_.tipo_protocolo_id in (
                ? , ? , ? , ? , ? , ?
            )
        ) 
        and (
            protocolo0_.data_protocolo between ? and ?
        )

Так что я могу изменить этот счет (protocolo0_.id) считать (*), что это простое изменение займет у меня 8 секунд в моем sql

1 Ответ

0 голосов
/ 05 июня 2018

Технически здесь нет различий в зависимости от используемого контекста.

Другими словами, COUNT(identifier-column) возвращает количество строк, в которых указанный столбец не равен нулю.Для столбца идентификатора это всегда верно, настолько семантически, что идентично использованию COUNT(*) или COUNT(1).

. В этом контексте более важно то, что COUNT(identifier-column) часто может работать лучше и возвращатьболее быстрый результат, чем при использовании COUNT(*) или COUNT(1), потому что всегда следует обращаться к индексу b-дерева для первичного ключа, так как другие варианты могут быть медленнее, потому что полное сканирование таблицы может происходить в зависимости от вашей платформы базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...