09 aprile 2006

Concatenazione in mysql

Ho recentemente avuto a che fare con una query in mysql dove le condizioni di join erano espresse nel seguente modo (con ansi-mode attivato):

[...] on
a.col = 'cost' || b.col

Nonostante b.col e a.col fossero indicizzate, l'explain della query portava l'uguaglianza a considerare TUTTE le righe della tabella b, circa 2 milioni.
Incredibilmente la versione seguente funzionava a dovere:

[...] on
a.col = concat('cost', b.col)

smentendo quindi il manuale, dove si afferma che le due versioni sono la stessa cosa (nella pagina: PIPES_AS_CONCAT).

1 commento:

Anonimo ha detto...

Onore al merito, anche il manuale di Mysql è un pochettino instabile. Oracle 4ever.