Скрытые стоимости
Удобство использования подстановочных знаков в запросах может вредить производительности и масштабируемости. Чем больше столбцов обрабатывает ваш запрос, тем больше данных должно пройти по сети между вашим приложением и сервером базы данных. Если для вашего ноутбука потребовалась замена экрана то выбрать его можете тут: http://pozitive.org/shop/matritsi/.
Вы, вероятно, имеете много одновременно выполняющихся запросов в среде вашего приложения. Они конкурируют за пропускную способность сети. Даже гигабитная сеть может переполняться сотней клиентов приложений, выполняющих запросы тысяч строк одновременно.
В объектно-реляционном отображении (ORM, Object-relational mapping) так же, как и в Активной записи (Active Record) часто используются запросы типа SELECT * по умолчанию, чтобы заполнить поля объекта, представленного в виде строки в базе данных. Даже если ORM предлагает отменить это действие, большинство программистов не беспокоится.
Вы просили — вы получили
Один из самых распространенных вопросов, задаваемых мне программистами, использующими подстановочные знаки SQL: «Существует ли сокращение, с помощью которого я могу запросить все столбцы, кроме нескольких, указанных мной?» Возможно, эти программисты пытаются избежать затрат ресурсов на выборку громоздких текстовых столбцов, в которых они не нуждаются, но желают при этом комфортных условий использования подстановочных знаков.
Ответом будет «нет». Язык SQL не поддерживает синтаксис, означающий «получить все столбцы, которые я хочу, но исключить те столбцы, которых я не хочу». Либо вы используете подстановочный знак, чтобы выделить все столбцы в таблице, либо вы сами перечисляете столбцы, которые вам нужны.
19.3. СПОСОБЫ РАСПОЗНАВАНИЯ АНТИПАТТЕРНА
Следующие сценарии могут подсказать, что в вашем проекте неуместно используются скрытые столбцы, что создает проблему:
• «Приложение прерывает работу, потому что продолжает указывать старые имена столбцов в наборе результатов базы данных. Мы попытались обновить весь код, но, я полагаю, мы что-то упустили».
Вы изменили таблицу в базе данных, добавив, удалив, переименовав столбцы или изменив их порядок, но вам не удалось изменить прикладной код, ссылающийся на таблицу. Отслеживать все эти ссылки — кропотливая работа.
• «Нам потребовались дни, чтобы отыскать узкое место нашей сети, и мы наконец свели его к чрезмерному трафику сервера базы данных. Согласно нашей статистике средний запрос требует более 2 Мб данных, но зыводит лишь десятую часть от этого объема».
Вы берете в выборку больше данных, чем вам нужно. |