Ускорение SQL запросов

Команда WEB студии

Если вам действительно интересно, как создавать быстрые и качественные запросы к MySQL базе данных, то вы пришли по адресу.

1. Главное использовать постоянное соединение с базой, чтобы избежать издержек.

2. На столбцах с максимальным количеством уникальных элементов должен быть первичный ключ. Столбец ID содержит много значений и подходит под ключ PRIMARY KEY.

3. Все связи между таблицами должны быть с ключами, из чего выходит, что у них будут одинаковые типы данных. Так же необходимо проверить поля, по которым будет вестись поиск (встречаются в выражениях типа WHERE, ORDER BY или GROUP BY) были с индексами. Но при этом не надо добавлять индексов слишком много (В таблице с 20 столбцами достаточно 5 индексов). Если столбец не используется в поиск и не сравнивается с другими, то индекс ему ни к чему.

4. Необходимо использовать простейшие привилегии при использовании GRAND, для того чтобы уменьшить издержки при проверке привилегий.

5. Использование RAM так же важно, ставьте длину поля не больше той что необходима. (Например, чтобы хранить пароль в БД с шифрованием md5 достаточно 32 символов, больше не имеет смысла)

6. В MySQL есть возможность установить индекс сразу на нескольких столбцах. При том можно использовать крайний столбец как отдельный индекс, этим уменьшив общее число индексов.

7. В ситуации когда индекс состоит из нескольких столбцов, лучше сделать отдельный кеш столбец, который будет достаточно коротким и уникальным.

8. Обязательно предусмотрите ANALYZE TABLE на заполненной таблице, для того чтобы MySQL было проще оптимизировать запросы.

9. Нужно использовать тип CHAR вместо похожих VARCHAR, TEXT, если длина столбца одинаковая у всех его значений.

10. Нет необходимости делить таблицу только из-за большого количества столбцов, при поиске это не имеет значения.

11. Столбец должен быть объявлен как NOT NULL, если в нем нет пустых значений. Это существенно ускорит проход по таблице.

12. Если вы всегда получаете значения в одном порядке сделайте запрос ALTER TABLE, чтобы оптимизировать ее

13. Не используйте цикл в PHP для извлечения похожих данных.

14. Необходимо использовать значение поля по умолчанию, и заменять его только при отличиях от него, это ускорит запросы.

15. Храните данные сессий или другие не очень важные данные в таблице типа MEMORY.

16. Не нужно хранить изображения в БД, достаточно будет только ссылки на него.

17. Если вы часто используете функции SUM или COUNT, то имеет смысл создать отдельную таблицу с этими данными и обновлять счетчик вручную. Если вы собираете статистику с крупной таблицы, то храните ее в отдельной сводной таблице.

18. Разделяйте сложные запросы на несколько простых, у них больше шансов быть закешированными.

19. Если вы загружаете таблицу из текстового файла, то лучше использовать LOAD DATA INFILE, это происходит значительно быстрее.

20. Не забывайте про настройки параметров сервера БД.

21. Старайтесь не использовать HAVING, это тормозит всю базу.

22. При желании тестировать какие-либо функции в MySQL, лучше использовать для этого BENCHMARK.

Поделитесь статьей со своими друзьями