Насколько большой профит в SQL от запроса двух полей вместо всех?
Допустим в таблице users есть поля username
, email
, first_name
, last_name
. Нужно получить данные username
и email
.
Если вызвать только эти поля и, соответственно, если вызвать все поля и взять только необходимые.
Ответы (1 шт):
Всё зависит от масштабов процесса. Если это какая-то задача, которая запрашивает данные 100 пользователей раз в сутки, то разницы для вас не будет. А вот если это высоконагруженный сервис, пользователей миллион (или миллиард) и у вас на счету каждый байт, переданный по сети, и каждая миллисекунда работы сервиса, то эффект будет заметный.
Даже если не рассматривать оптимальность самого запрос к БД, там могут быть разные варианты в плане эффективности, а рассматривать только звено БД -> бэкенд, то, по грубой прикидке, если вы получаете все поля, а не только необходимые, то вы удваиваете нагрузку на канал между БД и бэкэндом и создаёте лишнюю работу на стороне и БД и бэкенда. Ведь эти данные нужно:
- сериализовать на стороне БД
- передать по сети от БД к бэкенду
- десериализовать в бэкенде
В два раза больше передаваемых полей -> в два раза больше такой работы.
Но всегда при этом нужно смотреть по бизнес-задаче и по условиям в целом. Если эта лишняя нагрузка для вас не существенна, то можно не заморачиваться, забирать всегда все поля из таблицы, брать потом только нужные из них, у вас будет меньше лишнего кода в обвязке БД, сопровождать этот проект будет проще.
Но если это критичный по ресурсам проект, то вам придётся под каждый запрос делать какие-то оптимизации. Вплоть до того, что под каждую задачу делать отдельный маппинг со своими запросами к БД.
Но возможен и вариант, когда в таком проекте данные вообще не будут каждый раз запрашиваться из базы, а будут храниться в локальном кэше для оптимизации, и вам тогда опять же не нужно будет заморачиваться.