Помощник
|
MariaDB: несколько SELECT COUNT(*) |
pastuhoff
|
Сообщение
#12
|
|
Благодарю.
Разумеется, "основные рабочие" скрипты делают выборки по индексируемым полям `id` и/или `x`. Вот этот кусок SUM(IF(a=0,1,0)) AS `n2`, SUM(IF(a=1,1,0)) AS `n3`, SUM(IF(a>1,1,0)) AS `n4`, считывает `a` три раза (пусть и из кэшей винчестера или операционной системы)? Можно ли переписать условие на какой-нибудь case и получить еще небольшое ускорение? Я понимаю, что если это и даст выйгрыш, то небольшой. Но если можно еще оптимизировать - нужно это сделать. Сообщение отредактировал pastuhoff - 11.8.2014, 23:39 -------------------- |
|
|
mialpet |
12.8.2014, 12:06;
Ответить: mialpet
Сообщение
#13
|
|
Данные запросы нужны для контроля и массивы перебираться не будут.Просто фиксирование сводной статистики на некоторые моменты времени. Куда вы данные выводить будете? В шаблон? Не циклом случаем? Если a == 1 в это поле, если a < 1 то в это поле. Но может я плохо представляю себе задачу. |
|
|
pastuhoff
|
Сообщение
#14
|
|
Куда вы данные выводить будете? Пока просто в браузер для визуального контроля (речь идет не о сайте с кучей посетителей, а о системе, написанной исключительно для собственного пользования). -------------------- |
|
|
mialpet |
12.8.2014, 14:39;
Ответить: mialpet
Сообщение
#15
|
|
Пока просто в браузер для визуального контроля (речь идет не о сайте с кучей посетителей, а о системе, написанной исключительно для собственного пользования). Вот я о том и говорю что при выводе (вы же циклом выводите) и фасовать данные как надо, а из базы одной выборкой взять с одним условием x = 1 |
|
|
pastuhoff
|
Сообщение
#16
|
|
Дело в том, что условию x=1 может удовлетворять как 50 000 записей (которые можно, в принципе, в массив загнать), так и 200 000 000. И сами записи мне не важны в данном случае. Только статистика. Да и вообще, бд должна делать нужные выборки.
-------------------- |
|
|
mialpet |
12.8.2014, 14:55;
Ответить: mialpet
Сообщение
#17
|
|
Все! Дошло! Я тут не в тему залез сорри.
|
|
|
Neolands |
12.8.2014, 17:25;
Ответить: Neolands
Сообщение
#18
|
|
Зачения a и b (на самом деле там еще аналогичные c,d,...) меняются очень часто (процессор почти на 100% загружен почти 100% времени именно этими изменениями). Таблица пока на ~ 50 гигабайт (600+ миллионов записей). В перспективе - увеличение числа записей в пару раз. Думаю, доп. индексы при этом делать не нужно. Дополнительные индексы при таком подходе возможно будут даже вредить производительности, при добавлении данных в таблицу или их изменении индекс перестраивается. Я бы предложил внести изменения в Ваше приложение, если это возможно: 1) Разделить данные по разным таблицам, например по суточно, каждый раз в 00-00 создавать новую и писать свежие дынные в нее. Таким образом в таблицах за прошлые дни не будет происходить изменений или добавлений данных, не будет происходить перестраивание индексов, кэширование запросов будет более эффективным. 2) К прошедшим дням завести отдельную таблицу со статистикой Ваших суммирований. Ну и бэкап данных мне кажется проще для базы где много не крупных файлов, а не один огромный. |
|
|
pastuhoff
|
Сообщение
#19
|
|
Благодарю. Но данные меняются постоянно в пределах всей большой таблицы. Разбиение на разные таблицы, партицирование, смена движка и т.п. не рассматриваются.
Сейчас мне интересно, можно ли оптимизировать этот кусок: SUM(IF(a=0,1,0)) AS `n2`, SUM(IF(a=1,1,0)) AS `n3`, SUM(IF(a>1,1,0)) AS `n4`, При этом происходит только одно чтение 'a' или три (даже если из кэша hdd или os)? -------------------- |
|
|
Neolands |
12.8.2014, 22:51;
Ответить: Neolands
Сообщение
#20
|
|
|
Сейчас мне интересно, можно ли оптимизировать этот кусок: Попробуйте запросы проанализировать с помощью EXPLAIN.
Сообщение отредактировал Neolands - 12.8.2014, 22:51 |
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Жители РФ не спешат отказываться от Gmail, хотя на размышления осталось всего несколько месяцев | 20 | Room | 4186 | 11.3.2024, 16:00 автор: Lumex |
|
Сайты пролежали несколько месяцев, насколько реально восстановить трафик? | 108 | metvekot | 21411 | 27.1.2024, 22:39 автор: Vmir |
|
Несколько площадок под ваши статьи и ссылки | 119 | slaru | 54661 | 14.10.2022, 13:52 автор: slaru |
|
Несколько площадок под статьи (Беларусь) | 5 | vbiznese | 1988 | 4.8.2022, 18:11 автор: vbiznese |
|
Куплю несколько сайтов | 2 | Svet2019 | 1486 | 31.10.2019, 0:05 автор: Rodiola |
Текстовая версия | Сейчас: 25.4.2024, 15:36 |