Если вы действительно заинтересованы в настройке производительности запросов к базе данных, вам нужно получить большую жирную книгу по этой теме для базы данных по вашему выбору. Настройка производительности зависит от конкретной базы данных. Тем не менее, одна общая проблема при настройке запросов, о которой вы должны знать независимо от базы данных, заключается в том, что настроенный запрос должен возвращать точно такой же набор результатов, что и исходный запрос, но быстрее. Иногда люди, которые занимаются настройкой, забывают эту основную вещь и заканчивают запросом, который быстрее, но не делает то же самое.
Проблемы в запросах к базе данных -
Неправильные результаты - запрос на самом деле не делает то, что вы хотите
Производительность - время ожидания запроса слишком велико. Это может быть вызвано многими причинами, но есть несколько общих причин: плохой дизайн базы данных (например, не используйте таблицы EAV), использование неэффективных технических запросов, таких как коррелированные подзапросы, циклический просмотр записей по одному, отсутствие правильной индексации, статистика устаревшие запросы, которые не являются sargeable и, конечно, проблемы с оборудованием и сетью.
Для вставок, обновлений, удалений - могут быть проблемы с целостностью данных из-за плохого дизайна базы данных (отсутствие внешних ключей, отсутствие значений по умолчанию, отсутствие ограничений) или дизайна запросов. Иногда люди предпочитают создавать свое собственное автоинкрементное поле вместо того, чтобы использовать все, что поставляется с базой данных. Это может привести к проблемам с параллелизмом.
Безопасность - база данных не защищает должным образом свои данные (шифрование личных данных, кодирование во избежание атак с использованием инъекций, ограничение прав на выполнение действий с данными и т. Д.)
Отсутствие тестирования пограничных случаев - это частая проблема в динамическом SQl, которая запускается, особенно когда разработчики рассматривают только наиболее распространенный случай, и вещь ломается, когда встречается крайний случай.