Esto es más rápido que concat + substring rutina.
select substring(MD5(RAND()),1,20);
Como probé insertando 1M de datos aleatorios, md5 la rutina consume solo 1/4 (incluso menos) tiempo de concat + substring rutina;
El problema es que una cadena md5 contiene solo 32 caracteres, por lo que si necesita una más larga, tendrá que generar manualmente más cadenas md5 y substring hágalo usted mismo.