powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как процессор обрабатывает WHERE и GROUP BY?
5 сообщений из 5, страница 1 из 1
Как процессор обрабатывает WHERE и GROUP BY?
    #39580385
Shakusa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, что по факту происходит при обработке запроса типа

SELECT NAME, SUM(ZAPAS)
FROM TABLE
WHERE TABLE.SCHET IN (1012, 1013 )
GROUP BY NAME, DT
ORDER BY NAME

Таблица примерно такая:
NAME (5 символов) SCHET (4 цифры) ZAPAS (10 цифр) DT (дата)
Индекс из трех столбцов (NAME, SCHET, DT)

Как я себе это представляю:

1. Считываются по очереди строки в таблице (целиком, не отдельные значения столбцов). Сразу же проверяется равен ли SCHET в строке 1012 и равен ли он 1013. Все прошедшие проверку строки составляются в некоторую промежуточную таблицу 1 (в оперативной памяти? На HDD?)
2. Из промежуточной Таблицы 1 составляется множество мелких промежуточных Таблиц 2 для соответствующих пар NAME, DT
3. На следующем шаге для каждой из Таблиц 2 них вычисляется сумма тупым суммированием всех строк в ней
4. Результат объединяется в единую промежуточную таблицу 2
5. Все упорядочивается.
6. Пользователь получает конечный результат

Как оно на самом деле работает? Пытаюсь понять какой из шагов больше всего влияет на производительность и как именно различные архитектуры таблиц влияют на затраты времени по where и group by.
...
Рейтинг: 0 / 0
Как процессор обрабатывает WHERE и GROUP BY?
    #39580389
Shakusa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Другими словами, пытаюсь от понимания, что именно происходит при выполнении GROUP BY и WHERE, и понимания где основная нагрузка - в затратах времени на считывание строк или операций сравнения, спроектировать архитектуру базы данных
...
Рейтинг: 0 / 0
Как процессор обрабатывает WHERE и GROUP BY?
    #39580403
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В плане выполнения все есть.
...
Рейтинг: 0 / 0
Как процессор обрабатывает WHERE и GROUP BY?
    #39580455
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичВ плане выполнения все есть.

В принципе у нас все есть!

1. Благоприятно влияют на "на затраты времени" - упрядоченность таблицы по нужным полям (индексы т.е.).
2. Для конкретно вашего примера оптимальный индекс - кластерный по (SCHET, NAME, DT)
или простой (SCHET, NAME, DT) include (ZAPAS).
3. В памяти или озу - зависит от размеров данных. Если места хватает - в памяти, не хватает - выгружается временная таблица на диск.
4. И группировка не так выполняется. Мелких и промежуточных таблиц не создается. Набор упорядочивается по полям группировки и ... все становится проще.
...
Рейтинг: 0 / 0
Как процессор обрабатывает WHERE и GROUP BY?
    #39580556
Shakusa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич, о, спасибо, я не знал об этой функции!

aleks222, спасибо огромное, понял!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как процессор обрабатывает WHERE и GROUP BY?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]