SELECT u.id, u.honour, COUNT(*) + 1 AS rank
FROM user_info u
INNER JOIN user_info u2
ON u.honour < u2.honour
WHERE u.id = '$id'
AND u2.status = 'Alive'
AND u2.rank != '14'
Этот запрос в настоящее время полностью замедляет мой сервер. Это зависит от вашей чести, какой ранг вы находитесь в таблице user_info, которая хранит его у всех наших пользователей.Оптимизация и улучшение производительности этого запроса MYSQL
Снимок экрана для объяснения.
http://cl.ly/370z0v2Y3v2X1t1r1k2A
SELECT u.id, u.honour, COUNT(*)+1 as rank
FROM user_info u
USE INDEX (prestigeOptimiser)
INNER JOIN user_info u2
ON u.honour < u2.honour
WHERE u.id='3'
AND u2.status='Alive'
AND u2.rank!='14'
Возможно, вам нужно добавить несколько индексов –
Вы заметили, что у вас нет группы? –
вы можете включить расширенный пояснения из вашего выбора – ManseUK