3. 09 2020 | 14.33
Začal jsem sbírat data z databáze, když nějaký dotaz nepoužije klíč nebo je příliš pomalý. Našel jsem pár maličkostí k vyřešení.
Jeden z nich byl výběr řádků z databáze sestříděný náhodně - Order by rand().
Databáze MySQL hlásí:
Tmp_tables: 1 Tmp_disk_tables: 0 Tmp_table_sizes: 127072
# Full_scan: Yes Full_join: No Tmp_table: Yes Tmp_table_on_disk: No
# Filesort: Yes Filesort_on_disk: No Merge_passes: 0 Priority_queue: Yes
Jj, musí se prohledat všechny řádky, abych dostal svůj výsledek. Tabulka s daty sice není největší, ale i to zamrzí.
Napadla mě jednoduchá věc. Do tabulky jsem přidal další sloupec s názvem RAND, INT(11). Tento sloupec plním náhodnými čísly. Nepotřebuji, aby každou vteřinu byl výběr jiný. Stačí mi to třeba každých 5 minut, v mém případě 2x do hodiny. Stačí nastavit CRON, do něj skript, který v daný čas tabulku projde a zamění pole RAND za nová náhodná čísla a tím se to celé zase přetřídí jinak.
Nezapomenout dát na pole RAND klíč! :) Jednoduché a funkční! Order by rand.

A výsledek? Fenomenální.