Olá!
gilbertosilverio escreveu:Outra duvida, devo usar o CONCAT() para "indexar" e filtrar campos para agilizar a pesquisa
Não. Diferentemente do sistema DBF, o MySQL não permite usar funções nas expressões de criação de índices.
JoséQuintas escreveu:Já com o CONCAT() NÃO sei dizer se precisa fazer o cálculo com cada registro pra poder aplicar o filtro.
Sim. A função é chamada para cada linha.
JoséQuintas escreveu:Se mesmo assim aproveitar o índice, com certeza fica bem mais prático usar a conversão.
Não testei mas provavelmente não vai usar índice por causa do Concat().
Nota sobre a função Concat():
se uma das expressões a serem concatenadas contiver o valor NULL, o resultado final será NULL.
Código: Selecionar todos
select concat( 'Forum ', 'Clipper ', 'on ', 'Line') --> Forum Clipper on Line
select concat( 'Forum ', 'Clipper ', null , 'Line') --> null
Para contornar isto, utilize a função Concat_WS() (WS = With Separator)
Código: Selecionar todos
select concat_ws( ' ', 'Forum', 'Clipper', 'on', 'Line') --> Forum Clipper on Line
select concat_ws( ' ', 'Forum', 'Clipper', null , 'Line') --> Forum Clipper Line
O primeiro argumento é o separador. Se o separador for NULL, o resultado será NULL.
gilbertosilverio escreveu:Todas as formas retornam o que preciso, mais a que ficou mais funcional foi essa:
Portanto, se na tua tabela existirem valores NULL nas colunas envolvidas no Concat(), troque por Concat_WS().