Я согласен со всем, что здесь сказано, и я хотел бы добавить: убедитесь, что ваш SQL хорошо инкапсулирован, так что, когда вы обнаружите, что нужно оптимизировать, есть только одно место, где вам нужно его изменить, и изменение будет прозрачным для любого кода, вызывающего его.
Лично мне нравится инкапсулировать весь мой SQL в процедуры PL / SQL, но есть некоторые, кто с этим не согласен. Что бы вы ни делали, я рекомендую стараться не помещать ваш SQL "в строку" с другим исходным кодом. Кажется, что это всегда приводит к резке и вставке и быстро становится трудным в обслуживании. Поместите ваш SQL-код в другое место и постарайтесь использовать его как можно чаще.
Кроме того, ознакомьтесь с индексами, как они действительно работают, и когда вы должны и не должны их использовать. Когда люди получают медленный запрос, первым инстинктом многих людей является индексация таблицы до смерти. Это может решить проблему в краткосрочной перспективе, но в долгосрочной перспективе таблица с избыточным индексом будет медленно вставляться и обновляться. Несколько правильно подобранных индексов намного лучше, чем индексирование каждого поля. Попробуйте прочитать «Рефакторинг приложений SQL» Стефана Фарула.
Наконец, как сказано выше, правильно нормализованный дизайн базы данных поможет избежать 99% ваших медленных запросов. Денормализация иногда необходима, но важно знать правила, прежде чем нарушать их.
Удачи!