Clipper On Line • Ver Tópico - Tentando localizar o erro

Tentando localizar o erro

Discussão sobre SQL

Moderador: Moderadores

 

Tentando localizar o erro

Mensagempor JoséQuintas » 20 Mar 2020 20:51

Deixei programação de lado... fui no mercado fazer compras...

Acho que já sei qual é o problema, o mesmo que acontecia com pedidos.
Preciso acabar com campos chave caractere - a mistura disso.
Dependendo da situação, acho que o MySQL despreza qualquer índice nesses casos.

Isso chegou a acontecer com pedidos.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tentando localizar o erro

Mensagempor bencz » 21 Mar 2020 13:06

bom, isso não é para ser um problema... basta criar o índice...
Lembre-se somente, que na hora de criar o índice, existe uma ordem correta para se colocar os campos...

CREATE INDEX JPESTOQUE_IDX ON JPESTOQUE (ESTRANSA, ESPORDUTO, ESDATLAN, ESTIPLAN, ESQTDE, ESCFPOP, ESCFOP);


O campo, ESTRANSA, é o campo chave... os demais são os campos incluídos no índice....
Faça um teste com aqueles 3 indices que passei e veja se existe uma melhora na busca
Imagem
Avatar de usuário

bencz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 517
Data de registro: 28 Abr 2012 17:36
Curtiu: 6 vezes
Mens.Curtidas: 34 vezes

Tentando localizar o erro

Mensagempor JoséQuintas » 21 Mar 2020 15:53

bencz escreveu:bom, isso não é para ser um problema... basta criar o índice...


Nos clientes, IDCADASTRO é numérico, e nos pedidos era caractere.
O estoque é recém chegado ao MySQL, o campo de IDPRODUTO é caractere, mas no cadastro de produtos é numérico.
Essa mistura é normal no MySQL, mas conforme a situação causa uma lentidão tremenda,

LEFT JOIN ... ON JPESTOQUE.ESPRODUTO (VARCHAR) = JPPRODUTO.IDPRODUTO (INT)

Tinha me esquecido que isso aconteceu com pedidos e clientes, e somente em algumas pesquisas.
Por isso acho que deve ser a mesma coisa, mas agora com produtos.

NÃO é problema do MySQL, ele até faz muito em relacionar 1 com "000001".
Em querys mais simples isso funciona normalmente, mas em outras pode acontecer a lentidão.

O aplicativo vinha trabalhando como caractere, pro DBF, usando StrZero(x,6) na gravação.
No MYSQL procurei usar campos incremental, então tiveram que ser numéricos.
Pra gravação dupla, mantive caractere pra outros campos "não chave".
Há algum tempo estou deixando só numérico no aplicativo, e desvinculando dessa necessidade dos meus DBFs antigos/compatíveis.

Próximo passo:
Definitivamente só usar caractere na leitura/gravação de DBF - se ainda existir o DBF.
E no MySQL, obrigatoriamente deixar numérico em TUDO, não apenas aonde é chave primária.

Nota:
Não se trata do MySQL não aceitar número ou caractere.
É de usar código de produto no cadastro como sendo numérico, e no movimento de estoque o código do produto como caractere.
Digamos que durante a migração foi possível fazer errado, mas chegou a hora de fazer certo.

Ainda vou poder usar na gravação: SET CODIGO = "000001", mesmo se o campo for numérico.
Isso basta pra continuar com a gravação dupla, até acabar com o DBF de vez.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tentando localizar o erro

Mensagempor bencz » 21 Mar 2020 16:09

Foi o que falei nesse comentário: viewtopic.php?f=57&t=24045#p139387

Verifique se os campos "<APELIDO JPTRANSA>.IDTRANSA" e "<APELIDO JPESTOQUE>.ESTRANSA" são do mesmo tipo e verifique a mesma coisa para o outro join
Imagem
Avatar de usuário

bencz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 517
Data de registro: 28 Abr 2012 17:36
Curtiu: 6 vezes
Mens.Curtidas: 34 vezes

Tentando localizar o erro

Mensagempor JoséQuintas » 21 Mar 2020 18:40

bencz escreveu: Foi o que falei nesse comentário: viewtopic.php?f=57&t=24045#p139387


Não percebi, mas já tinha acontecido isso antes.

Já estava caminhando pra deixar tudo numérico.
Até comentei aqui no fórum: as telas sem os zeros ficam mais "limpas".
Então, estou no caminho certo, já estava "resolvendo" o problema, sem perceber que era esse o problema.

De qualquer jeito, todas as alterações agora são pra eliminar DBF, então... sem problemas alterar no banco de dados.
Só que agora vai ser mais pesado, talvez alterar até tudo de uma vez.

Tem que ficar em casa mesmo, em quarentena.... ótimo pra dar uma geral nos fontes.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tentando localizar o erro

Mensagempor asimoes » 22 Mar 2020 02:04

JoséQuintas escreveu:Rodei o profiler e vi a falta de um índice, em uma tabela com 4 registros, que é a tabela "FYSCO_SituacaoProcuracoes"... ao criar o índice o tempo de execução da query caiu em 4ms....

Onde baixa o profiler?
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Tentando localizar o erro

Mensagempor asimoes » 22 Mar 2020 02:13

Já achei no HeidiSQL
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Tentando localizar o erro

Mensagempor janio » 22 Mar 2020 10:40

aSimoes
Já achei no HeidiSQL


Onde?
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Tentando localizar o erro

Mensagempor asimoes » 22 Mar 2020 12:25

janio escreveu:Onde?

2020-03-22 12_23_56-.png

Pra usar o SHOW PROFILE ALL; tem que deixar a caixa Perfil de Consultas, desmarcada
SHOW PROFILE ALL;
SELECT
*
FROM
asaprev.cobrancaasaprev c
-- WHERE
-- c.CODIGO = '20735'
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Tentando localizar o erro

Mensagempor bencz » 22 Mar 2020 12:51

Imagem
Avatar de usuário

bencz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 517
Data de registro: 28 Abr 2012 17:36
Curtiu: 6 vezes
Mens.Curtidas: 34 vezes

Tentando localizar o erro

Mensagempor asimoes » 22 Mar 2020 13:05

Gostei disso: EXPLAIN SELECT * FROM cadastrosocios

MariaDB [test]> EXPLAIN SELECT * FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.a=t2.a AND t2.a=t3.a;
+------+-------------+-------+------+---------------+------+---------+------+------+--------------------------------------------------------+
| id   | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra                                                  |
+------+-------------+-------+------+---------------+------+---------+------+------+--------------------------------------------------------+
|    1 | SIMPLE      | t1    | ALL  | NULL          | NULL | NULL    | NULL |    3 |                                                        |
|    1 | SIMPLE      | t2    | ALL  | NULL          | NULL | NULL    | NULL |    3 | Using where; Using join buffer (flat, BNL join)        |
|    1 | SIMPLE      | t3    | ALL  | NULL          | NULL | NULL    | NULL |    3 | Using where; Using join buffer (incremental, BNL join) |
+------+-------------+-------+------+---------------+------+---------+------+------+--------------------------------------------------------+
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Tentando localizar o erro

Mensagempor asimoes » 22 Mar 2020 13:19

Agora tem que entender essas informações

2020-03-22 13_18_15-Window.png
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Anterior



Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro