Alapvetően 2 felé bontanám a kódot. A mysql lassan számol, és ráadásul fölöslegesen sok sallangot gyüjt maga köré.
Első lépésben php-ban kiszámoltatnék mindent ami a where részben van, hogy minél könnyebben lefusson az sql query. Igy ráadásul jobban ki lehet hasznáni a célzott indexeket. Utánna php-ből számolnám hozzá a távolságot, hiszen ott is rengeteg értéket előre ki lehet számoltatni, ami nagyban megkönnyiti a számolást.
A távolság szerinti sorbarendezést pedig valahogy igy oldanám meg:
PHP kód:
# $pontok az összes az sql-ből kiszedett adat.
$runner = 1;
foreach ($pontok as $pont)
{
$pont['distance'] = 1+2 // itt jön a számoló rész.
$final[$pont['distance'] . '-' . $runner] = $pont;
}
ksort($final);
Igy összetettebb lessz a kódod, viszont több mindent tudsz a memóriában csinálni, igy haladósabb lessz. Ráadásul webszervert sokkal könnyebb bővíteni mint mysql szervert
Könyvjelzők