Понять ваши требования до разработки схемы (если это возможно).
Узнайте о данных, 1) индексирование 2) тип используемого хранилища, 3) механизм или функции поставщика; то есть ... кеширование, возможности в памяти 4) типы данных 5) размер таблицы 6) частота запросов 7) связанные рабочие нагрузки, если ресурс используется совместно 8) тестирование
А) Требования будут отличаться. Если оборудование не может поддерживать ожидаемую рабочую нагрузку, вам следует пересмотреть вопрос о том, как обеспечить требования в рабочей нагрузке. По поводу добавления столбца в таблицу. Если база данных поддерживает представления, вы можете создать индексированное (?) Представление конкретных данных с указанными именованными столбцами (вместо выбора '*'). Периодически проверяйте свои данные и схему, чтобы убедиться, что вы никогда не столкнетесь с синдромом «Вывоз мусора» -> «Вывоз мусора».
Предполагая, что нет другого решения; Вы можете принять во внимание следующее. Всегда есть несколько решений проблемы.
1) Индексирование: выбор * выполнит сканирование таблицы. В зависимости от различных факторов это может включать поиск диска и / или конфликт с другими запросами. Если таблица является многоцелевой, убедитесь, что все запросы выполняются и выполняются в срок, меньший запланированного времени. Если имеется большой объем данных, а ваша сеть или другой ресурс не настроен; Вы должны принять это во внимание. База данных является общей средой.
2) тип хранения. То есть: если вы используете SSD, диск или память. Время ввода-вывода и нагрузка на систему / процессор будут варьироваться.
3) Может ли администратор базы данных настроить базу данных / таблицы для повышения производительности? Предполагая, по какой-либо причине, команды решили, что выбор «*» является лучшим решением проблемы; Может ли БД или таблица быть загружены в память? (Или другой метод ... может быть, ответ был разработан для ответа с задержкой в 2-3 секунды? --- во время воспроизведения рекламы, чтобы заработать доход компании ...)
4) Начните с базовой линии. Понять ваши типы данных, и как будут представлены результаты. Меньшие типы данных, количество полей уменьшает количество данных, возвращаемых в наборе результатов. Это оставляет ресурсы доступными для других системных нужд. Системные ресурсы обычно имеют ограничение; «всегда» работать ниже этих пределов, чтобы обеспечить стабильность и предсказуемое поведение.
5) размер таблицы / данных. выберите '*' обычно с крошечными таблицами. Они обычно умещаются в памяти, и время отклика быстро. Опять .... рассмотрите ваши требования. План по ползучести функции; всегда планируйте текущие и возможные будущие потребности.
6) Частота запросов / запросов. Знайте о других рабочих нагрузках в системе. Если этот запрос срабатывает каждую секунду, а таблица крошечная. Результирующий набор может быть спроектирован так, чтобы оставаться в кеше / памяти. Однако, если запрос представляет собой частый пакетный процесс с гигабайтами / терабайтами данных ... вам может быть лучше выделить дополнительные ресурсы, чтобы другие рабочие нагрузки не были затронуты.
7) Соответствующие рабочие нагрузки. Понять, как используются ресурсы. Является ли сеть / система / база данных / таблица / приложение выделенной или общей? Кто заинтересованные стороны? Это для производства, разработки или контроля качества? Это временное «быстрое решение». Вы проверяли сценарий? Вы будете удивлены, сколько проблем может существовать на современном оборудовании сегодня. (Да, производительность высокая ... но дизайн / производительность все еще ухудшаются.) Нужно ли системе выполнять 10 000 запросов в секунду против 5-10 запросов в секунду. Выделен ли сервер базы данных или выполняет другие приложения, мониторинг выполняется на общем ресурсе. Некоторые приложения / языки; O / S будут занимать 100% памяти, вызывая различные симптомы / проблемы.
8) Тест: проверь свои теории и пойми как можно больше. Ваша проблема выбора '*' может иметь большое значение, или это может быть то, о чем вам даже не нужно беспокоиться.
SELECT COUNT(*)
быть плохим невероятно стар и устарел . Для получения дополнительной информацииSELECT *
- см .: stackoverflow.com/questions/1960036/…