Wypełnienie tabeli (mysql) losowymi danymi (int vs string)

Chciałem przetestować wydajność indeksowania w MySQL, ale nie miałem dość dużej tabeli z danymi.

Trochę szperania w sieci, i napisałem 2 procedury (można byłoby to zamknąć w jednej):

Procedura LOSOWO zwraca nam na wyjściu losową liczbę z zakresu 1-99, natomiast WYPELNIJ_INT wypełnia nam tabelę liczby podaną na wejściu liczbę danych.

A wyniki badań dla integer?

Dodałem również procedury do wypełnienia znakami tabeli stringi:

I wyniki dla znakowej:

Z tego by wynikało, że lepiej tworzyć zindeksowane pola tekstowe (16 ms), niż liczbowe (141 ms). Ale czy aby na pewno?
Uważne oko zauważyło, że zapytanie dla tekstowego zwróciło unikatowy wiersz (1 rows fetched), natomiast dla liczby było to aż 55 wyników.
Dodajmy do tabeli liczby pole z unikatową wartością dla kolumny liczba i sprawdźmy szybkość zapytania:

W tym momencie wydobycie wiersza z liczb trwa tylko 2x dłużej (32 ms vs 16ms). Czyli można nieoficjalnie uznać, że wiedza wszechmocna ma rację, że indeksy stringów są lepszy niż liczb.

Dodam tylko że przy 0,6 mln pozycjach w każdej z tabel wygrywa prędkością select na liczbach, dopiero przy przykładzie jak wyżej (2 mln) widać przewagę indeksowania stringów.