Помощник
|
![]() |
![]() |
Сообщение
#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 -------------------- |
|
|
![]() |
![]()
Сообщение
#13
|
![]() |
Данные запросы нужны для контроля и массивы перебираться не будут.Просто фиксирование сводной статистики на некоторые моменты времени. Куда вы данные выводить будете? В шаблон? Не циклом случаем? Если a == 1 в это поле, если a < 1 то в это поле. Но может я плохо представляю себе задачу. |
|
|
![]() |
Сообщение
#14
|
![]() |
Куда вы данные выводить будете? Пока просто в браузер для визуального контроля (речь идет не о сайте с кучей посетителей, а о системе, написанной исключительно для собственного пользования). -------------------- |
|
|
![]() |
![]()
Сообщение
#15
|
![]() |
Пока просто в браузер для визуального контроля (речь идет не о сайте с кучей посетителей, а о системе, написанной исключительно для собственного пользования). Вот я о том и говорю что при выводе (вы же циклом выводите) и фасовать данные как надо, а из базы одной выборкой взять с одним условием x = 1 |
|
|
![]() |
Сообщение
#16
|
![]() |
Дело в том, что условию x=1 может удовлетворять как 50 000 записей (которые можно, в принципе, в массив загнать), так и 200 000 000. И сами записи мне не важны в данном случае. Только статистика. Да и вообще, бд должна делать нужные выборки.
-------------------- |
|
|
![]() |
![]()
Сообщение
#17
|
![]() |
Все! Дошло! Я тут не в тему залез сорри.
|
|
|
![]() |
![]()
Сообщение
#18
|
![]() |
Зачения a и b (на самом деле там еще аналогичные c,d,...) меняются очень часто (процессор почти на 100% загружен почти 100% времени именно этими изменениями). Таблица пока на ~ 50 гигабайт (600+ миллионов записей). В перспективе - увеличение числа записей в пару раз. Думаю, доп. индексы при этом делать не нужно. Дополнительные индексы при таком подходе возможно будут даже вредить производительности, при добавлении данных в таблицу или их изменении индекс перестраивается. Я бы предложил внести изменения в Ваше приложение, если это возможно: 1) Разделить данные по разным таблицам, например по суточно, каждый раз в 00-00 создавать новую и писать свежие дынные в нее. Таким образом в таблицах за прошлые дни не будет происходить изменений или добавлений данных, не будет происходить перестраивание индексов, кэширование запросов будет более эффективным. 2) К прошедшим дням завести отдельную таблицу со статистикой Ваших суммирований. Ну и бэкап данных мне кажется проще для базы где много не крупных файлов, а не один огромный. |
|
|
![]() |
Сообщение
#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)? -------------------- |
|
|
![]() |
![]()
Сообщение
#20
|
|
![]() |
Сейчас мне интересно, можно ли оптимизировать этот кусок: Попробуйте запросы проанализировать с помощью EXPLAIN.
Сообщение отредактировал Neolands - 12.8.2014, 22:51 |
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
![]() |
Сайты пролежали несколько месяцев, насколько реально восстановить трафик? | 78 | metvekot | 13039 | Вчера, 19:43 автор: MorKer |
![]() |
Несколько регионов для сайта услуг Как лучше? |
14 | KM_ | 1280 | 9.3.2023, 13:04 автор: MGorelkin |
![]() |
Несколько площадок под ваши статьи и ссылки | 119 | slaru | 52046 | 14.10.2022, 13:52 автор: slaru |
![]() |
Несколько площадок под статьи (Беларусь) | 5 | vbiznese | 1576 | 4.8.2022, 18:11 автор: vbiznese |
![]() |
Куплю несколько сайтов | 2 | Svet2019 | 1296 | 31.10.2019, 0:05 автор: Rodiola |
![]() |
Текстовая версия | Сейчас: 1.6.2023, 19:57 |