To jest szybsze niż concat + substring rutyna.
select substring(MD5(RAND()),1,20);
Jak testowałem wstawianie losowych danych 1M, md5 rutyna zużywa tylko 1/4 (jeszcze mniej) czas concat + substring rutyna;
Problem polega na tym, że ciąg md5 zawiera tylko 32 znaki, więc jeśli potrzebujesz dłuższego, musisz ręcznie wygenerować więcej ciągów md5 i substring to sam.