Für jeden User eine Tabelle zu erstellen erzeugt unnötigen Overhead und ist nicht sauber (Wartung, usw). Unübersichtlich ist da nichts, weil du kannst ja einfach nach einem User suchen (oder einen View, virtuelle Tabelle o.Ä. machen).
Mach' 2 Tabellen:
Table_users (UserId primary key)
Table_data (UserId, unqiueId, timestamp, etc.)
Je nach Datenabfrage auch noch Indizes erstellen (wegen Performance). Die Haversin-Formel kannst du in MySQL programmieren.