Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Диапазон, group by, Using temporary
|
|||
|---|---|---|---|
|
#18+
Есть с виду простейшая задача, которую не могу решить. Есть таблица, 3 колонки. Нужно выбрать срез по времени и сгруппировать по колонке hash. Проблема в том, что если используется ключ hash, то перебираются все записи, вне зависимости от среза по времени. Если использовать составной индекс (ctime, hash), то используется только часть индекса + создается временная таблица. В итоге нужно сделать группировку по срезу времени без использования временной таблицы (Using temporary). Увы, у меня не получается Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2017, 17:54 |
|
||
|
Диапазон, group by, Using temporary
|
|||
|---|---|---|---|
|
#18+
VaoЕсли использовать составной индекс (ctime, hash), то используется только часть индекса + создается временная таблица.Речь про Using filesort или про Using temporary ? Сколько записей получается в результате? Зачем в запросе ORDER BY null ? Я бы предложил убрать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2017, 21:52 |
|
||
|
Диапазон, group by, Using temporary
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. Долго думал? Или ни разу не читал про DISTINCT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2017, 22:11 |
|
||
|
Диапазон, group by, Using temporary
|
|||
|---|---|---|---|
|
#18+
miksoftРечь про Using filesort или про Using temporary ?Vaoбез использования временной таблицы (Using temporary) miksoftСколько записей получается в результате? Много. Все зависит от интервала, в таблице 20 млн записей. miksoftЗачем в запросе ORDER BY null ? Я бы предложил убрать. Убираем и получаем filesort. А сортировка здесь вовсе не нужна. Akina Код: sql 1. Долго думал? Или ни разу не читал про DISTINCT? Ну давай похоливарим. Чего можешь о DISTINCT сказать, кроме того, происходит не явный вызов GROUP BY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2017, 00:40 |
|
||
|
Диапазон, group by, Using temporary
|
|||
|---|---|---|---|
|
#18+
VaomiksoftЗачем в запросе ORDER BY null ? Я бы предложил убрать. Убираем и получаем filesort.А что со временем выполнения? VaoА сортировка здесь вовсе не нужна.Ну так и не факт, что она вредит. filesort - это не всегда физическая запись на диск. VaomiksoftСколько записей получается в результате? Много. Все зависит от интервала, в таблице 20 млн записей.Из того, что много записей в таблице, нельзя сделать вывод о количестве записей в результате группировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2017, 01:58 |
|
||
|
Диапазон, group by, Using temporary
|
|||
|---|---|---|---|
|
#18+
miksoftА что со временем выполнения? Запрос работает менее минуты. Тут дело не во времени, я согласен и на большее время, но есть одно но. Данные льются в таблицу, при этом запрос создает блокировку и все остальные пользователи ждут. Я понимаю, что после этих слов мне предложат много других идей (делать запрос не в режиме реального времени, таблицы двойники и т.д.), но задача пока как есть. miksoftИз того, что много записей в таблице, нельзя сделать вывод о количестве записей в результате группировки. За день в результат попадет ~60к записей. Если отчет формируют за пару месяцев, то результатов для группировки более 3 млн. miksoftНу так и не факт, что она вредит. filesort - это не всегда физическая запись на диск. Любая сортировка = увеличение времени выполнения запроса. Особенно когда сортируются миллионы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2017, 20:15 |
|
||
|
Диапазон, group by, Using temporary
|
|||
|---|---|---|---|
|
#18+
VaoДанные льются в таблицу, при этом запрос создает блокировку и все остальные пользователи ждут.Вроде бы не должно быть у InnoDB таких эффектов. Vaoтаблицы двойникиДа, создать предагрегированные таблицы, например, по дням, имело бы смысл попробовать. VaoЛюбая сортировка = увеличение времени выполнения запроса.Не любая. Для выполнения группировки существует не так уж много методов, и сортировка - один из них. И тогда ORDER BY, совпадающий с GROUP BY, достается фактически бесплатно. https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_sort_buffer_size If you see many Sort_merge_passes per second in SHOW GLOBAL STATUS output, you can consider increasing the sort_buffer_size value to speed up ORDER BY or GROUP BY operations that cannot be improved with query optimization or improved indexing.Думаю, имеет смысл попробовать увеличить sort_buffer_size и посмотреть эффект. Причем как с исходным ORDER BY null, так и без него. Случайно подвернулось в доке вот такое (это новое для меня): https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_sql_buffer_result sql_buffer_result If set to 1, sql_buffer_result forces results from SELECT statements to be put into temporary tables. This helps MySQL free the table locks early and can be beneficial in cases where it takes a long time to send results to the client. The default value is 0.Возможно, имеет смысл попробовать в вашем случае, если уж переживаете за время блокировки исходной таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2017, 22:46 |
|
||
|
Диапазон, group by, Using temporary
|
|||
|---|---|---|---|
|
#18+
VaoЧего можешь о DISTINCT сказать, кроме того, происходит не явный вызов GROUP BY? Могу сказать, что чем ниже селективность, тем больше разница в скорости выполнения. В пользу DISTINCT, конечно. Остальное неинтересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 07:56 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39460885&tid=1830655]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 366ms |

| 0 / 0 |
