Ни любой бэкенд разработчик использует фреймворки, если большая часть функционала фреймворка не нужна, а производительность очень важна, то стоит задуматься о применимости фреймворка. Конечно, тут можно использовать микрофреймворки, а не писать свой функционал, но это другой вопрос. Что касается ORM, то даже если вы ими пользуетесь, вы должны понимать как они работают, ну и разумеется понимать как работают СУБД. Для отдельного класса задач ORM может и хватать, но те же индексы, если даже ORM их создает, в принципе не могут быть всегда оптимальными, т.к. ORM не может угадать будущую селективность полей. Опять же миграции, не понимая как работает тот или иной запрос SQL DDL (да и DML тоже), вы легко положите СУБД. Если миграция выполняется несколько часов, а вы ее запустите на СУБД без снятия нагрузки - будет весело. А снимать нагрузку каждый раз - это дорогое удовольствие. И это только часть проблем, которые могут возникнуть, если не понимать как работают СУБД.