Существует множество способов оптимизации баз данных и запросов. Мой метод следующий.
Посмотрите на схему БД и посмотрите, имеет ли это смысл
Чаще всего базы данных имеют плохой дизайн и не нормализуются. Это может сильно повлиять на скорость вашей базы данных. В общем случае выучите 3 нормальные формы и применяйте их постоянно. Нормальные формы выше 3-й Нормальной формы часто называют формами нормализации, но на самом деле это означает, что они нарушают некоторые правила для ускорения работы базы данных.
Я предлагаю придерживаться 3-й нормальной формы, за исключением случаев, когда вы являетесь администратором баз данных (что означает, что вы знаете последующие формы и знаете, что делаете). Нормализация после 3-го NF часто выполняется позже, а не во время проектирования.
Запросите только то, что вам действительно нужно
Отфильтруйте как можно больше
Предложение «Где» является наиболее важной частью оптимизации.
Выберите только те поля, которые вам нужны
Никогда не используйте «Выбрать *» - укажите только те поля, которые вам нужны; это будет быстрее и будет использовать меньшую пропускную способность.
Будьте осторожны с соединениями
Соединения дороги с точки зрения времени. Убедитесь, что вы используете все ключи, которые связывают две таблицы вместе, и не присоединяетесь к неиспользуемым таблицам - всегда пытайтесь присоединиться к индексированным полям. Также важен тип соединения (INNER, OUTER, ...).
Оптимизация запросов и хранимых процедур (Most Run First)
Запросы очень быстрые. Как правило, вы можете получить множество записей менее чем за секунду, даже с помощью объединений, сортировки и расчетов. Как правило, если ваш запрос длиннее секунды, вы, вероятно, можете его оптимизировать.
Начните с наиболее часто используемых запросов, а также запросов, выполнение которых занимает больше всего времени.
Добавление, удаление или изменение индексов
Если ваш запрос выполняет полное сканирование таблицы, индексы и правильная фильтрация могут решить проблему, которая обычно занимает очень много времени. Все первичные ключи нуждаются в индексах, потому что они делают соединения быстрее. Это также означает, что все таблицы нуждаются в первичном ключе. Вы также можете добавить индексы для полей, которые вы часто используете для фильтрации в предложениях Where.
Вы особенно хотите использовать индексы для целых чисел, логических значений и чисел. С другой стороны, вы, вероятно, не хотите использовать индексы для BLOB-объектов, VarChars и длинных строк.
Будьте осторожны с добавлением индексов, потому что они должны поддерживаться базой данных. Если вы выполняете много обновлений в этом поле, поддержание индексов может занять больше времени, чем экономит.
В мире Интернета таблицы только для чтения очень распространены. Когда таблица доступна только для чтения, вы можете добавлять индексы с меньшим негативным влиянием, поскольку индексы не нужно обслуживать (или только редко требуют обслуживания).
Перемещение запросов к хранимым процедурам (SP)
Хранимые процедуры обычно лучше и быстрее, чем запросы по следующим причинам:
Stored Procedures are compiled (SQL Code is not), making them faster than SQL code.
SPs don't use as much bandwidth because you can do many queries in one SP. SPs also stay on the server until the final results are returned.
Stored Procedures are run on the server, which is typically faster.
Calculations in code (VB, Java, C++, ...) are not as fast as SP in most cases.
It keeps your DB access code separate from your presentation layer, which makes it easier to maintain (3 tiers model).
Удалить ненужные виды
Представления - это особый тип запросов - они не являются таблицами. Они логические, а не физические, поэтому каждый раз, когда вы запускаете select * из MyView, вы запускаете запрос, который делает представление, и ваш запрос в представлении.
Если вам всегда нужна одна и та же информация, просмотры могут быть хорошими.
Если вам нужно отфильтровать представление, это похоже на выполнение запроса по запросу - это медленнее.
Настройки Tune DB
Вы можете настроить БД разными способами. Обновите статистику, используемую оптимизатором, запустите параметры оптимизации, сделайте БД доступной только для чтения и т. Д. Это требует более широких знаний о БД, с которой вы работаете, и в основном выполняется БД.
****> Использование анализаторов запросов ****
Во многих базах данных есть инструмент для запуска и оптимизации запросов.В SQL Server есть инструмент под названием Query Analyzer, который очень полезен для оптимизации.Вы можете писать запросы, выполнять их и, что более важно, видеть план выполнения.Вы используете выполнение, чтобы понять, что SQL Server делает с вашим запросом.