Otimizar 20 Milhões de registro banco de dados mysql

Tenho uma tabela cliente no mysql com 20 milhões de registros. Quando eu vou contar quantos clientes por estado, por cidade ou até mesmo consultar um unico cpf a consulta demora muito. Segue o schema da tabela, lembrando que ja está com índice. Será que se eu transformar essa tabela uma pra muitos resolveria o problema ?!

id                int(11) cpf               varchar(255) nome_cliente      int(11) razao_social      varchar(355) nome_fantasia     varchar(355) situacao          int(11) data_situacao     varchar(255) motivo_situa      int(11) cod_nat_jurid     int(11) data_in_ativ      varchar(255) tipo_registro     varchar(255) data_insert       timestamp 

Ou alguma outra ideia de como eu posso otimizar a consulta desses dados ? A mudança de banco de dados também é viável e teria como fazer. Mongodb, sqlserver…

Estou usando php7 e mysql versão 5. Obrigado desde já 🙂

Otimizar 20 Milhões de registro banco de dados mysql

Tenho uma tabela cliente no mysql com 20 milhões de registros. Quando eu vou contar quantos clientes por estado, por cidade ou até mesmo consultar um unico cpf a consulta demora muito. Segue o schema da tabela, lembrando que ja está com índice. Será que se eu transformar essa tabela uma pra muitos resolveria o problema ?!

id                int(11) cpf               varchar(255) nome_cliente      int(11) razao_social      varchar(355) nome_fantasia     varchar(355) situacao          int(11) data_situacao     varchar(255) motivo_situa      int(11) cod_nat_jurid     int(11) data_in_ativ      varchar(255) tipo_registro     varchar(255) data_insert       timestamp 

Ou alguma outra ideia de como eu posso otimizar a consulta desses dados ? A mudança de banco de dados também é viável e teria como fazer. Mongodb, sqlserver…

Estou usando php7 e mysql versão 5. Obrigado desde já 🙂

Erro de tipagem ao receber chave estrangeira do banco de dados

Boa noite, basicamente essa é uma lista que fiz para mostrar os dados que foram inseridos no banco de dados, porém venho encontrando problemas de tipagem nas linhas 1 e 2 (marcados como comentário), como previsto, a função getstring só funcionaria com strings, porém preciso receber “cidade_nomecidade” e “doenca_nomedoenca” (da coluna no banco de dados) que são do tipo Cidade e Doenca. Há alguma forma de eu conseguir dar algum get nessas chaves estrangeiras dentro desse contexto ? O erro gerado é: “incompatible types:String cannot be converted to Cidades”

public List<Casos> read(){     Connection con = ConnectionFactory.getConnection();     PreparedStatement stmt = null;     ResultSet rs = null;      List<Casos> caso = new ArrayList<>();       try {         stmt = con.prepareStatement("SELECT * FROM casos");         rs = stmt.executeQuery();          while(rs.next()){              Casos casos = new Casos();             casos.setIdcaso(rs.getInt("idcaso"));             casos.setQtdCaso(rs.getInt("qtdCaso"));             casos.setCidades(rs.getstring(("cidade_nomecidade")); //LINHA 1             casos.setDoenca(rs.getString("doenca_nomedoenca")); //LINHA 2             caso.add(casos);         }       } catch (SQLException ex) {         JOptionPane.showMessageDialog(null, "Falha na leitura");     }finally{          ConnectionFactory.closeConnection(con, stmt, rs);      }       return caso;  }  public class Casos {  private int     idcaso; private int     qtdCaso; private Doenca  doenca; private Cidades cidades;  public Doenca getDoenca() {     return doenca; }  public void setDoenca(Doenca doenca) {     this.doenca = doenca; }  public Cidades getCidades() {     return cidades; }  public void setCidades(Cidades cidades) {     this.cidades = cidades; }  public int getQtdCaso() {     return qtdCaso; }  public void setQtdCaso(int qtdCaso) {     this.qtdCaso = qtdCaso; }  public int getIdcaso() {     return idcaso; }  public void setIdcaso(int idcaso) {     this.idcaso = idcaso; } 

}

Criar Formulário / Tela HTML com coordenada do Banco de Dados

Boa Noite, Minha Duvida é o seguinte, possui um sistema onde toda a regra de negocio e o sistema em si está em banco de dados (SQL) inclusive as tela, relatórios, etc, porem ele possui um client para acessar, hoje ele ja é web, pois fica num servidor e por esse client o sistema é acessado, porem quero transformar esse sistema em Web/HTML, sendo acessado pelo browser, porem tenho dificuldade de entender como criar um formulario HTML com a tela que irei extrair do banco, ou seja, farei um select via webservice que me retornara os componentes da minha tela, label, edit, botão, grid, etc, como escrever um codigo para transformar isso em HTML, existe alguma ferramenta que realiza isso, se necessário poderei passar mais informações. Obrigado

Como fazer um update em uma coluna no banco de dados auto incremente e levando em conta um ordenamento

Preciso fazer um update em uma tabela do banco alterando uma coluna com o valor auto incremente porem devo levar em conta um ordenamento, eu consegui pelo seguinte codigo fazer o update com auto incremente mas não conseguir fazer levando em conta o ordenamento, o campo do ordenamento esta na mesma tabela do update com o nome Descricao.

  DECLARE @count int   SET @count = 0   update MinhaTabela set Codigo = @count, @count=@count+1 

Como chama a função cast() do banco de dados no método ORDER de um banco de dados numa expressão LINQ em C# C#?

Eu tenho um campo que armazena DATETIME no meu banco de dados. Porém eu preciso ignorar a hora desse campo na quando eu for ordenar por ele. O seguinte código faz a minha busca:

public virtual async Task<(List<TModel>, int)> FindAsync(IQueryable<TModel> query, int pageNumber = 1, int pageSize = 20, string[] sortExpression = null, Expression<Func<TModel, object>> includes = null)     {         query = Includes(includes, query);         query = SetFilterAll(query);          var count = await query.CountAsync();         query = Sort(sortExpression, query);         query = Pagination(pageNumber, pageSize, query);         return (await query.ToListAsync(), count);     } 

Gostaria de mandar no parâmetro sortExpresion algo como, CAST(meu_campo_date AS DATE) Para que no final executasse o um SQL semelhante a esse:

SELECT * FROM MinhaTabela ORDER BY CAST(meu_campo_date AS DATE) DESC 

Como retornar os dados do banco de dados no python usando sqlite e Tkinter?

def buscar(self):

    self.nomep = self.nome.get()     self.nome.delete(0, END)     self.nome.insert(INSERT, self.nome)     self.tele.delete(0, END)     self.tele.insert(INSERT,self.tele)     self.telef.delete(0, END)     self.telef.insert(INSERT,self.telef)      conexao = sqlite3.connect("AgendaBD.db")     c = conexao.cursor()     c.execute("SELECT * FROM PESSOAS WHERE nomep = '%s' "%(self.nome))     conexao.commit()      for linha in c:         self.nome = linha[1]         self.tele = linha[2]         self.telef = linha[3] 

Em qual diretório salvar o arquivo do banco SQLite?

Estou como uma aplicação aqui que esta usando um banco de dados SQLite porem estou com duvidas de onde salvar o arquivo. Estive pensando em salvar em um diretório fixo como por exemplo C:/MeuPrograma/banco.db porém notei que no linux o diretório C: não existe, estive pensando também em salvar na pasta do padrão do usuário mas não sei se é valido. Existe alguma pasta padrão do sistema ou diretório seguro pra min salvar isso.

Pegar info do Banco de Dados a partir do elemento do array

Estou fazendo um carrinho em php. O que eu quero é conseguir pegar o nome do produto (que está no Banco de Dados) a partir do id dele, que é o valor de cada posição do array. Entretanto, como há múltiplos “produtos” no vetor carrinho como faço para criar um loop para buscar no banco o produto a partir de cada posição do vetor?

Vetor:

      $  _SESSION['carrinho'][] = $  _GET['produtoid']; 

Código de busca no BD a partir do id que está armazenado em cada posição do vetor:

       for($  i = 0; $  i < count($  _SESSION['carrinho']); $  i++){          $  consulta = "SELECT * FROM produto where id = $  _SESSION['carrinho'][$  i] ";          $  resultado = $  PDO->query($  consulta);           $  vetorResultado = $  resultado->fetchAll(PDO::FETCH_ASSOC);          foreach ($  vetorResultado as $  valor) {              echo $  valor['nome'];          }       } 

Porém quando executo aparece o seguinte erro:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\projeto\carrinho.php on line 24 

Migração com Flyway e Banco H2 – Insert não funciona

Estou fazendo uma migração para um banco h2-console em meu projeto spring e estou com seguinte bug :

Minha aplicação sobe sem problema algum mas não realiza o insert , vou deixar como esta meu properties e a tabela criada na migracao do flyway e o log

server.port:8090 spring.jpa.database=H2 spring.datasource.url:jdbc:h2:mem:atm flyway.locations=classpath:resources/db/migration flyway.enabled=true spring.datasource.username:sa spring.datasource.password: spring.h2.console.enabled=true spring.jpa.show-sql=true security.basic.enabled:false spring.jpa.hibernate.ddl-auto=create      019-05-09 22:30:17.595  INFO 22734 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect 2019-05-09 22:30:17.634  INFO 22734 --- [  restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000227: Running hbm2ddl schema export Hibernate: drop table account if exists Hibernate: drop table bank if exists Hibernate: drop table client if exists Hibernate: create table account (id bigint generated by default as identity, balance decimal(19,2), number bigint, ownedr varchar(255), password varchar(255), id_bank bigint, primary key (id)) Hibernate: create table bank (id bigint generated by default as identity, descricao varchar(255), primary key (id)) Hibernate: create table client (id bigint generated by default as identity, nome varchar(255), primary key (id)) Hibernate: alter table account add constraint FKpwnjbb07xe9slyywchx4ddqfm foreign key (id_bank) references bank 2019-05-09 22:30:17.640  INFO 22734 --- [  restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000230: Schema export complete      CREATE TABLE bank(      id   BIGINT(20) PRIMARY KEY AUTO)INCREMENT,     nome VARCHAR(50) NOT NULL    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;   INSERT INTO bank (nome) VALUES ('SANTANDER');  INSERT INTO bank (nome) VALUES ('ITAU');  INSERT INTO bank (nome) VALUES ('SAFRA');