Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] View não filtra todos os elementos de tabelas muito grandes

Bom dia a todos

O problema que eu tive foi ao fazer uma view de uma tabela enorme, a notas_fiscais, que conta com milhares de dados

Fui tentar fazer a criação de uma tabela de view filtrando as vendas do ano de 2018 e o MySQL Workbench criou assim:

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`localhost` 
    SQL SECURITY DEFINER
VIEW `venda_2018` AS
    SELECT 
        `notas_fiscais`.`CPF` AS `CPF`,
        `notas_fiscais`.`MATRICULA` AS `MATRICULA`,
        `notas_fiscais`.`DATA_VENDA` AS `DATA_VENDA`,
        `notas_fiscais`.`NUMERO` AS `NUMERO`,
        `notas_fiscais`.`IMPOSTO` AS `IMPOSTO`
    FROM
        `notas_fiscais`
    WHERE
        (YEAR(`notas_fiscais`.`DATA_VENDA`) = 2018)

Percebi que ao fazer a consulta, ele só salvou as vendas até o mês de março, dando um retorno de 6500 linhas. Acredito que deve ser o MySQL Workbench não deixando eu criar uma view muito grande.

A minha dúvida é, como eu faço para garantir que ele colete todos os dados, independente do tamanho da view que vai ser gerada?

4 respostas

Oii Murilo, tudo bem?

O Workbench tem uma configuração que limita o retorno de uma consulta SELECT. Pode ser que isso que esteja impedindo que você tenha todas as linhas retornadas. Porém, essa limitação é sobre o valor que será retornado na consulta, e não interfere no que está sendo de fato armazenado por baixo dos panos, então, os dados estão sendo coletados e armazenados, mas não disponibilizados para visualização para o usuário.

Para alterar esse limite, vá em "Edit > Preferences > SQL Execution" e veja se "Limit Rows" está ativado. Você pode escolher quantas linhas serão o limite, ou desativá-lo.

Manter o limite pode ser útil para não sobrecarregar o SGBD em consultas muito grandes.

Espero que seja a solução! Qualquer coisa, me avisa.

Abraços.

solução!

Entao, eu já tinha feito essa alteração, tanto que agora ele está com limite de 50.000 rows.

Mas como eu falei antes, isso não afetou a tabela de view, tanto que essa tabela de vendas de 2018 não foi afetada com isso. tanto que eu fiz essa query e deu o resultado :

SELECT count(*) FROM sucos_vendas.venda_2018;

resultado: 6500

e não existe vendas pós o mês de março

Oi Murilo,

Agora entendi melhor o que houve! Desculpe não ter compreendido tão bem sua dúvida antes.

Essa é uma característica dessa base de dados, mesmo. Ela só vai até esse período. Se você filtrar os dados de 2017, por exemplo, verá que existem vendas para o ano inteiro.

Se tiver mais alguma dúvida, conte conosco.

Abraços!

Deu certo, muito obrigado

Sem querer coloquei minha resposta como solução, era para ter colocado no seu, foi mal. kkkkkkkkkk