Мой ответ также является дополнением к двум предыдущим комментариям.
Вы проиндексировали половину своей таблицы. Но если вы посмотрите на некоторые индексы (publish, delete, MoveToWordPress), вы заметите, что они равны 1 или 0, поэтому их селективность низкая (количество строк, деленное на количество различных значений этого столбца). Эти индексы - пустая трата пространства.
Некоторые вещи тоже не имеют смысла.
tinyint(4)
- это на самом деле не делает его четырехзначным целым числом. Номер есть длина дисплея. tinyint
равен 1 байту, поэтому он имеет 256 возможных значений. Я предполагаю, что там что-то пошло не так.
Кроме того, 10 гигабайт в размере всего за 75 тысяч записей? Как вы измерили размер? Кроме того, какое у вас оборудование?
Изменить в отношении вашего обновленного вопроса:
Существует много способов масштабирования баз данных. Я свяжу один SO вопрос / ответ, чтобы вы могли понять, что вы можете сделать: здесь это .
Другая вещь, которую вы можете сделать, это получить лучшее оборудование. Обычно причиной медленных баз данных при увеличении их размера является подсистема жесткого диска и доступная память, оставленная для работы с набором данных. Чем больше оперативной памяти у вас есть - тем быстрее все это становится.
Еще одна вещь, которую вы могли бы сделать, это разбить вашу таблицу на две части таким образом, чтобы одна таблица содержала текстовые данные, а другая - данные, относящиеся к тому, что вашей системе требуется для выполнения определенного поиска или сопоставления (вы бы поставили целочисленные поля там).
Используя InnoDB, вы получили бы огромный прирост производительности, если бы две таблицы были соединены через какой-то внешний ключ, указывающий на первичный ключ. Поскольку InnoDB таков, что поиск по первичному ключу происходит быстро, вы открываете несколько новых возможностей для того, что вы можете сделать с вашим набором данных. В случае, если ваши данные становятся все больше и больше, вы можете получить достаточно оперативной памяти, и InnoDB попытается буферизовать набор данных в оперативной памяти. Есть интересная вещь, называемая HandlerSocket , которая делает некую изумительную магию с серверами, которые имеют достаточно оперативной памяти и используют InnoDB.
В конце концов, все сводится к тому, что вам нужно сделать и как вы это делаете. Поскольку вы не упомянули об этом, трудно дать оценку того, что вы должны сделать.
Моим первым шагом к оптимизации, безусловно, было бы настроить экземпляр MySQL и создать резервную копию этой большой таблицы.