Я мог бы действительно использовать некоторую помощь в оптимизации таблицы на моем сайте, которая используется для отображения рейтинга. Я много читал о том, как оптимизировать запросы и как правильно использовать индексы, но даже после внесения изменений, которые, я думал, сработает, можно заметить небольшое улучшение. Мое быстрое решение состояло в том, чтобы просто использовать только 100 000 лучших рейтингов (обновляемых ежедневно и хранящихся в другой таблице), чтобы улучшить скорость на данный момент, но мне действительно не нравится этот вариант.
Итак, у меня есть таблица, в которой хранится информация для пользователей, которая выглядит примерно так:
таблица 'кеш':
id (Primary key)
name
region
country
score
Есть и другие переменные, хранящиеся о пользователе, но я не думаю, что они здесь актуальны, так как они не используются в рейтингах.
Пользователь может просматривать 3 основных страницы рейтинга:
Мировоззрение:
SELECT cache name,region,country,score FROM cache ORDER BY score DESC LIMIT 0,26
Вид региона:
SELECT name,region,country,score FROM cache WHERE region='Europe' ORDER BY score DESC LIMIT 0,26
и вид на страну:
SELECT name,region,country,score FROM cache WHERE region='Europe' AND country='Germany' ORDER BY score DESC LIMIT 0,26
Я испробовал почти каждую комбинацию индексов, которые я могу придумать, чтобы облегчить работу для базы данных, и хотя некоторые, кажется, немного помогают, я не могу найти тот, который будет возвращать только 26 строк для обоих запросы по регионам и странам (просто с индексом «оценка» мировые рейтинги стремительно растут).
Я чувствую, что могу упустить что-то простое, любая помощь будет высоко ценится!
Небольшая дополнительная информация: таблица кеша в настоящее время составляет около 920 мегабайт с общим количеством строк более 800 000. Если бы вы могли использовать больше информации, просто дайте мне знать.