Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как процессор обрабатывает WHERE и GROUP BY?
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста, что по факту происходит при обработке запроса типа 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 21:49 |
|
||
|
Как процессор обрабатывает WHERE и GROUP BY?
|
|||
|---|---|---|---|
|
#18+
Другими словами, пытаюсь от понимания, что именно происходит при выполнении GROUP BY и WHERE, и понимания где основная нагрузка - в затратах времени на считывание строк или операций сравнения, спроектировать архитектуру базы данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 21:54 |
|
||
|
Как процессор обрабатывает WHERE и GROUP BY?
|
|||
|---|---|---|---|
|
#18+
В плане выполнения все есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 22:30 |
|
||
|
Как процессор обрабатывает WHERE и GROUP BY?
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичВ плане выполнения все есть. В принципе у нас все есть! 1. Благоприятно влияют на "на затраты времени" - упрядоченность таблицы по нужным полям (индексы т.е.). 2. Для конкретно вашего примера оптимальный индекс - кластерный по (SCHET, NAME, DT) или простой (SCHET, NAME, DT) include (ZAPAS). 3. В памяти или озу - зависит от размеров данных. Если места хватает - в памяти, не хватает - выгружается временная таблица на диск. 4. И группировка не так выполняется. Мелких и промежуточных таблиц не создается. Набор упорядочивается по полям группировки и ... все становится проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 06:25 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1690566]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
5ms |
track hit: |
82ms |
get topic data: |
14ms |
get first new msg: |
8ms |
get forum data: |
4ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 451ms |

| 0 / 0 |
