Al3XTo co píšeš jsem nepochopil. Zadání bylo nalézt náhodný záznam. Pokud záznamy v tabulce mažeš pomocí DELETE, tak bys neměl narážet na nesmazané záznamy, protože jejich počet je za každých okolností 0. Pokud mažeš záznamy tak, že si je označíš, tak by se samozřejmě oba selekty musely opravit, aby pracovali pouze se záznamy, které nejsou označené jako smazané. V tom případě by COUNT(*) už neměl složitost 1, ale složitost v nejhorším případě N (pokud je v indexu, tak je to lepší, například jedna má implementace BTree umí zjistit počet záznamu v zadaném indexu taky v jednotkovém čase - takže předpokládám, že u MYSQL je to ještě lépe optimalizované).
Problém, který toto řešení má, je to, že když mezi SELECT COUNT(*) a SELECT LIMIT vymaže záznam a náhodou ti padne náhodné číslo vyšší, než současný počet záznamů v tabulce, který se změnil po tom, co jsi udělal dotaz na počet. To že se mažou záznamy mimo tuto část nevadí. |