Ой Я вообще перешел на NoSQL (объектно-ориентированые) хранилища и очень доволен. Гибкость структуры как по мне просто колосальная. Но не будем заниматься лирикой.
- На самом деле на сколько я понимаю каждый из пользователей запускает этот скрипт, а результаты не всегда меняются. Да и необходимость в выборе всех данных я думаю тоже отсутствует, так как никто сразу не в силе просмотреть 2500 строк, все должно быть разделено на части (страницы) в случае просмотра информации.
- Проверять если ли пользователь в базе нужно однозначно на уровне базы с правильно выставленным ключем.
- Если у Вас запись вида id1, id2 ( то-есть 1 запись равно игра между двумя пользователями ) я бы сделал ключ по типу Math.min(id1,id2)+'.'+Math.max(id1,id2) таким способом генерируя валидный ключ, ну и можно после обернуть в md5 ( это в случае если Вам нужна выборка конкретной записи ).
- Так же я бы заменил тестовое поле "nomer_kryga" на числовое и записывал бы только число (текст уже подставлял во флеше).
- поля победитель и проигравший представлял в виде его ID, имя подтягивал бы вторым запросом. ( но предварительно выбрал все нужные мне айди и одним запросом выбрал их всех)
- Плюс ко всему я бы еще не использовал xml. На пхп клиенту отдавал бы данные

PHP код:
ecgo json_encode(mysql_fetch_array($sql));
Что тоже бы немного освободило ресурсов как сервера так и интернет-канала.
- Да и передавал данные по amf-протоколу.