Что быстрее SELECT * или SELECT [поля]?03.11.2022, 15:35. Показов 2311. Ответов 32
Метки нет (Все метки)
MS SQL сервер
Имеется рабочая БД. Дикий легаси. Приходится работать с ней. В ней имеется динамическая таблица примерно на 600-700 столбцов Прога пишется в Builder С++ и сами данные получаю через TADOQueryТип полей BIT. Причём в столбец данных состоит только из одного элемента (грубо говоря параметр - его значение).
Сейчас да, заполняю SELECT [список_полей]. Сами данные потом закидываются в std::map и порядок полей мне не важен.Возник вопрос - а будет ли быстрее выполняться запрос если я получу сразу все поля через SELECT * ? Объём пересылаемых данных особо не важен - доступ к БД только из гигабитной локалки. Тормоза на стороне клиента так же не важны - это уже мои проблемы и std::map может быть заменён на что либо другое - сейчас пока костяк пишется. Запрос выполняется редко, но в будущем может идти по таймеру, например раз в минуту. З.Ы. Просьба не пинать, если вопрос покажется тупым. С SQLем имел дело в начале 2000х, и то в виде Clipper`а.
0
|
||||||
| 03.11.2022, 15:35 | |
|
Ответы с готовыми решениями:
32
Создать триггер, чтоб выводились поля (SELECT) Что быстрее: DLookUp или SQL SELECT
|
| 08.11.2022, 14:55 [ТС] | |||||||
std::map<> искать нужное поле, которое формируется по определённому алгоритму.
0
|
|||||||
|
|
||||||
| 08.11.2022, 15:10 | ||||||
|
drfaust, А разу получить готовую коллекцию не проще? И потом уже с ней творить что надо?
0
|
||||||
|
|
|
| 08.11.2022, 15:28 | |
|
drfaust, Я делаю сразу типизированную коллекцию во время чтения из БД, в которую сразу попадают нужные поля таблицы в нужные поля класса.
0
|
|
| 08.11.2022, 16:04 [ТС] | |||||||
|
Я же говорил, что из себя представляет таблица. Тупой набор поле-значение. В той таблице, что я приводил в качестве примера, k1_541 == NULL, k1_542 == true, k1_543 == false и всё - четвёртого не дано, нескольких значений быть не может. Сделано в древности так, что название параметра является именем столбца. По хорошему должны были делать так:
Т.е. тупо пары - название параметра и его текущее значение - всё... З.Ы. По смыслу k1_*** - это текущее значение "аварии", true - есть авария по этому параметру, false - нет, всё пучком, NULL - соответственно не можем узнать (такой параметр объект не предоставляет(просто его нет физически) или нет связи с объектом).
0
|
|||||||
|
|
|
| 08.11.2022, 16:11 | |
|
drfaust, Хммм, вот в примере у вас адекватная таблица, как и должна быть
А вот такой вопрос, у вас ведь это временная таблица насколько я понял, судя по имени ##tm_DinD. Если это так, то делается она запросом, дак может просто переделать это запрос в адекватный вид? И читать обыкновенную таблицу с двумя полями?
0
|
|
| 08.11.2022, 16:21 [ТС] | ||
|
А вот что бы её переделать в адекватный вид нужно переписать тонны кода на Delphi-6. Чем собственно и занимаемся. Уже по тихоньку разрабатывается новая структура всей БД, заодно и код переписывается. Мне нет разницы как запихивать данные в std::map - изменил запрос и дело с концом. Тем более, что все запросы, в прогах собираюсь по макимому выкинуть в конфигурационные файлы. Тогда изменения в БД (при переходе со старой на новую), по большей части сведуться к редактированию конфигов программы.
0
|
||
|
|
||
| 08.11.2022, 16:27 | ||
|
0
|
||
| 08.11.2022, 16:36 [ТС] | ||
|
Другую таблицу-дубликат делать смысла не вижу. Скорее всего в новой БД постараемся вообще без подобных вещей обойтись. Тонны древнего говна мамонта на дельфятине-6й - тронь что в старой БД - что то да отваливается. Там даже один лишний аварийный дискрет ввести в БД проблема.
0
|
||
|
139 / 105 / 36
Регистрация: 27.07.2022
Сообщений: 360
|
|
| 08.11.2022, 16:36 | |
|
Что-то у меня такое подозрение, что времени на обсуждение этой оптимизации потрачено в разы больше, чем она потенциально могла бы сэкономить.
В общем-то, наверное можно было бы уже взять и попробовать оба варианта и сравнить время выполнения
1
|
|
| 08.11.2022, 16:49 [ТС] | |
|
Ну я то уже выбрал вариант
select * при разговоре с invm. Тем более это только на пару-лут лет, надеюсь мы справимся за этот срок и избавимся от 20летнего легаси везде. Просто думал, что может ещё кто подключится и научит правильно пользоваться SQL`ем
0
|
|
|
|
|
| 08.11.2022, 16:55 | |
|
0
|
|
| 08.11.2022, 17:03 [ТС] | ||
|
По крайней мере изменения от физ. объекта до БД доходят за ~ 40-50сек (раньше, до оптимизации на уровне OPC-серверов) было около 2 минут. Но это никак не касалось БД. В будущем пробиваем резервный канал связи у начальства, и цикл опроса сократиться чуть ли не до секунды. В этом году запрос на закуп железа порезали. Потому пока по прежнему.
0
|
||
| 08.11.2022, 17:03 | |
|
Как быстрее будет работать SELECT для 100 млн строк Как вытащить во вложенном SELECT запись, используя Текущий код внешнего SELECT?
Сохранить результат Select в перемнную. Один Select - 3 цикла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|