Поэтапно буду переводить (на сколько позволяет время) и выкладывать перевод статьи: Top 1000 SQL Performance Tips.
Специфические способы влияющие на производительность:
- Использование EXPLAIN для создания плана выполнения запроса;
- Использование Slow Query Log <http://dev.mysql.com/doc/refman/5.0/en/slow-query-log.html>
- Не используйте DISTINCT, когда Вы уже спользовали или собираетель использовать GROUP BY;
- Производительность INSERT: Партия INSERT and REPLACE; Использование LOAD DATA вместо INSERT;
- LIMIT m,n не так сильно влияет на скорость как говорят;
- Не используйте ORDER BY RAND(), если у Вас более 2000 записей;
- Используйте SQL_NO_CACHE, когда Вы вебираете часто обновляемые данные или большие наборы данных;
- Избегите использование символов подстановки в начале LIKE запросов;
Избегите коррелированных подзапросов и в select и where; - Никакие расчетные сравнения — не изолируют внесенные в указатель колонки;
- ORDER BY и LIMIT работают лучше всего с равенствами и «покрытые» индексами;
- Отделяйте text/blobs от metadata, и не помещайте text/blobs в результаты, если Вы не нуждаетесь в них;
- Полученные таблицы могут быть полезными для восстановления BLOB, не сортируя их;
ALTER TABLE…ORDER BY может взять данные, сортированные хронологически, и повторно заказать это различной областью — это может заставить вопросы на той области бежать быстрее (возможно, это входит в индексацию?); - Знайте, когда разбить сложный вопрос и присоединиться к меньшим;
- Удалите за один раз небольшое количество данных, если Вы можете;
- Делайте подобные запросы последовательными, таким образом кеш используется;
- Соблюлюдайте правельные стандарты запроса SQL;
- Не используйте лишние функцие и параметры;
- Использование OR на многократных областях индекса (<5.0) в UNION может ускорить запрос (с LIMIT);
- Не используйте COUNT * в таблицах Innodb для каждого поиска;
- При использовании INSERT … ON DUPLICATE KEY update (INSERT IGNORE) избегайте использоние SELECT;
- Максимально используйте groupwise вместо подзапросов;
Для первой части всё…