Problemas com chave estrangeira varchar

01/12/2017

0

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:
 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

Ricardo Pestana

Responder

Post mais votado

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.

Marcelo Santana

Marcelo Santana
Responder

Mais Posts

14/12/2017

Rander Freitas

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!
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar