Мне действительно не помешала бы помощь в оптимизации таблицы на моем веб-сайте, которая используется для отображения рейтинга. Я много читал о том, как оптимизировать запросы и как правильно использовать индексы, но даже после внесения изменений, которые, как я думал, будут работать, можно увидеть небольшое улучшение. Мое быстрое решение состояло в том, чтобы просто использовать только 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. Если вам нужна дополнительная информация, просто дайте мне знать.