Problemas com chave estrangeira varchar
Fala galera, blz?!
Tenho um campo que é chave estrangeira e seu tipo é varchar(4) nas duas tabelas. Quando faço o join, ele derruba monstruosamente a performance do select e nunca pega a chave primary (sempre dá um full table scan no explain).
Mesmo forçando o índice:
Tem algum problema ou particularidade no uso de varchar como chave estrangeira? (fiz um teste mudando o campo para char e nada mudou)
obrigado,
Essa dúvida foi gerada a partir de um comentário na aula [url:descricao=Busca redundante com cláusulas Join - Curso Completo MySQL - Aula 41]https://www.devmedia.com.br/busca-redundante-com-clausulas-join-curso-completo-mysql-aula-41/33713[/url]
Tenho um campo que é chave estrangeira e seu tipo é varchar(4) nas duas tabelas. Quando faço o join, ele derruba monstruosamente a performance do select e nunca pega a chave primary (sempre dá um full table scan no explain).
Mesmo forçando o índice:
inner join tabela pai c1 force index for join (primary) on (c1.ccoidgo = g.codigo)
Tem algum problema ou particularidade no uso de varchar como chave estrangeira? (fiz um teste mudando o campo para char e nada mudou)
obrigado,
Essa dúvida foi gerada a partir de um comentário na aula [url:descricao=Busca redundante com cláusulas Join - Curso Completo MySQL - Aula 41]https://www.devmedia.com.br/busca-redundante-com-clausulas-join-curso-completo-mysql-aula-41/33713[/url]
Ricardo Pestana
Curtidas 0
Melhor post
Marcelo Santana
01/12/2017
Bom dia, Ricardo.
Por gentileza.. poste a estrutura das tabelas.
Não entendi porque você colocou "tabela pai c1" depois do join, e acredito que a variável esteja diferente também.
Abraço.
Por gentileza.. poste a estrutura das tabelas.
Não entendi porque você colocou "tabela pai c1" depois do join, e acredito que a variável esteja diferente também.
Abraço.
GOSTEI 2
Mais Respostas
Rander Freitas
01/12/2017
Olá Ricardo,
Não tem problema em colocar chave estrangeira como campo varchar. Entretanto, é uma prática não recomendada por causa da queda de performance e também pela complexidade em se comparar strings, e não números.
Solicito também que poste a estrutura da tabela para que possamos analisar melhor o porquê do erro.
Valeu!
Não tem problema em colocar chave estrangeira como campo varchar. Entretanto, é uma prática não recomendada por causa da queda de performance e também pela complexidade em se comparar strings, e não números.
Solicito também que poste a estrutura da tabela para que possamos analisar melhor o porquê do erro.
Valeu!
GOSTEI 1