- 5.2.1. Синтаксис оператора
EXPLAIN
(получение информации оSELECT
) - 5.2.2. Оценка производительности запроса
- 5.2.3. Скорость выполнения запросов
SELECT
- 5.2.4. Как MySQL оптимизирует выражения
WHERE
- 5.2.5. Как MySQL оптимизирует
DISTINCT
- 5.2.6. Как MySQL оптимизирует
LEFT JOIN
иRIGHT JOIN
- 5.2.7. Как MySQL оптимизирует
ORDER BY
- 5.2.8. Как MySQL оптимизирует
LIMIT
- 5.2.9. Скорость выполнения запросов
INSERT
- 5.2.10. Скорость выполнения запросов
UPDATE
- 5.2.11. Скорость выполнения запросов
DELETE
- 5.2.12. Другие советы по оптимизации
Сначала приведем одно правило, касающееся всех запросов: Чем сложнее ваша система привилений, тем больше издержек.
Если не было выполнено никаких операторов GRANT
, MySQL каким-то образом
будет оптимизировать проверку полномочий. Таким образом при наличии очень
большого объема данных лучше, наверное, будет работать без привилегий. В
противном случае при большом количестве полномочий проверка результатов
будет происходить с увеличенными издержками.
Если проблема состоит в некоторой явной функции MySQL, всегда можно протестировать ее в клиенте:
mysql> SELECT BENCHMARK(1000000,1+1); +------------------------+ | BENCHMARK(1000000,1+1) | +------------------------+ | 0 | +------------------------+ 1 row in set (0.32 sec)
Из приведенного выше примера видно, что MySQL может выполнять более 1000000 операций сложения за 0,32 секунды на PentiumII 400MHz.
Все функции MySQL достаточно хорошо оптимизированы, но могут попадаться
некоторые исключения, и функция BENCHMARK(число_циклов,выражение)
-
хороший инструмент для выяснения, присутствует ли проблема в запросе.