Договорились с выше. Будьте очень осторожны, чтобы избежать преждевременной оптимизации путем денормализации здесь.
Не используйте «SELECT *». Больше полей означает больше операций чтения с диска.
Убедитесь, что вы используете покрывающие индексы - то есть вы можете получить все запрошенные значения полей из индекса, не переходя к таблице данных. Дважды проверьте, что вы не читаете данные записи.
Тест, Тестовый Тест.
Если возможно, используйте таблицу только для записи (т.е. без обновлений и без удалений), чтобы mysql не использовал повторно удаленные пробелы и перезаполнял индексы.
Убедитесь, что индексированные поля как можно короче (но не короче).
РЕДАКТИРОВАТЬ: Еще некоторые вещи пришли на ум ...
Стандартные (и самые быстрые) типы таблиц MyISAM не имеют никакого способа поддерживать записи в какой-либо последовательности, кроме порядка вставки (изменяемого путем заполнения удаленных строк), т.е. никаких кластеризованных индексов. Но вы можете подделать его, если периодически копируете / перестраиваете таблицу на основе индекса, который полезен для группировки связанных записей на одной странице. Конечно, новые записи не будут соответствовать, но эффективность таблиц на 98% лучше, чем по умолчанию.
Ознакомьтесь с настройками конфигурации, особенно с размерами кэша. На самом деле, чтобы упростить задачу, не беспокойтесь о каких-либо других настройках, кроме размеров кэша (и поймите, чем они являются).
Познакомьтесь с информацией в журнале статистики, поскольку она относится к эффективности настроек кеша конфигурации.
Постоянно запускать «медленный журнал запросов». Это низкие накладные расходы, и это первая остановка во всем восстановлении.
Это само собой разумеется, но не запускайте ничего, кроме базы данных на одном сервере. Одна из важных причин - возможность оптимизировать ресурсы только для базы данных.
НЕ денормализовать, пока все не развалится.
Non-переговоров вопросов.
Все, что выше этой строки, является сомнительным советом. Никогда не принимайте никаких советов, не понимая этого и не проверяя его. У каждого дизайнерского решения есть две стороны; и онлайн-совет MySQL хуже, чем в среднем, при обобщениях без квалификации и без учета преимуществ и штрафов. Вопрос все, что я отметил здесь, а также. Понять, что вы делаете, почему вы это делаете и какие преимущества вы ожидаете получить. Измерьте изменения, чтобы увидеть, было ли то, что ожидалось, тем, что произошло.
Никогда, никогда "пробуй что-нибудь посмотреть, что происходит". Это похоже на тюнинг автомобиля с несколькими карбюраторами, только хуже. Если то, что вы ожидали, не произошло, отмените изменение и либо выясните это, либо поработайте над чем-то еще, что вы понимаете. Сон твой друг; большая часть этого придет к вам за одну ночь после трудных сессий тестирования.
Вы никогда не поймете всего этого; вам всегда нужно учиться больше, чем вы знаете. Всегда спрашивайте «почему» и «каковы ваши доказательства». (Часто кто-то читает что-то, что не относится к вашей ситуации.)