оптимизация autostatus

Все вопросы/проблемы по установке и использовании.
Ответить
yuranikspb
Сообщения: 10
Зарегистрирован: 10 июл 2018, 21:23
Имя: Юрий
Откуда: Спб

оптимизация autostatus

Сообщение yuranikspb »

Реально ли, как то оптимзировать ? очень грузят цпу.
ниже пример sql запроса на i5 выполняется около 70 сек ( отловлено через лог медленный запросов sql)

Код: Выделить всё

select 
  e.*, 
  (
    if(
      (
        select 
          SUM(
            (
              (msq.field_352 + 0)-(msq.field_353 + 0)
            )
          ) 
        from 
          app_entity_39 msq 
        where 
          msq.field_365 = e.id 
        limit 
          1
      ), 
      (
        IFNULL(
          (
            select 
              SUM(
                (
                  msq.field_439 *(msq.field_440 + 0)
                )
              ) 
            from 
              app_entity_44 msq 
            where 
              msq.field_437 = e.id 
            limit 
              1
          ), 
          0
        )+ IFNULL(e.field_324, 0)+ IFNULL(
          (
            select 
              SUM(msq.field_488) 
            from 
              app_entity_47 msq 
            where 
              msq.field_490 = e.id 
            limit 
              1
          ), 
          0
        )+ IFNULL(
          (
            select 
              SUM(
                (
                  IFNULL(
                    (msq.field_493 + 0), 
                    0
                  )+ IFNULL(
                    (
                      IFNULL(
                        (msq.field_498 + 0), 
                        0
                      )* IFNULL(
                        (msq.field_500 + 0), 
                        0
                      )
                    ), 
                    0
                  )+ IFNULL(
                    (
                      (msq.field_499 + 0)* 20
                    ), 
                    0
                  )+ IFNULL(
                    (
                      IFNULL(
                        (msq.field_525 + 0), 
                        0
                      )* IFNULL(
                        (msq.field_526 + 0), 
                        0
                      )
                    ), 
                    0
                  )+ IFNULL(
                    (
                      (
                        IFNULL(msq.field_537, 0)* IFNULL(
                          (msq.field_529 + 0), 
                          0
                        )
                      ) +(
                        IFNULL(msq.field_538, 0)* IFNULL(
                          (msq.field_531 + 0), 
                          0
                        )
                      ) +(
                        IFNULL(msq.field_539, 0)* IFNULL(
                          (msq.field_533 + 0), 
                          0
                        )
                      ) +(
                        IFNULL(msq.field_540, 0)* IFNULL(
                          (msq.field_535 + 0), 
                          0
                        )
                      ) +(
                        IFNULL(
                          (msq.field_542 + 0), 
                          0
                        )* IFNULL(msq.field_543, 0)
                      )
                    ), 
                    0
                  )
                )
              ) 
            from 
              app_entity_30 msq 
            where 
              parent_item_id = e.id 
            limit 
              1
          ), 
          0
        )+ IFNULL(
          (
            select 
              SUM(
                (
                  (msq.field_417 + 0)* msq.field_418
                )
              ) 
            from 
              app_entity_40 msq 
            where 
              msq.field_545 = e.id 
            limit 
              1
          ), 
          0
        )+ IFNULL(e.field_548, 0)- IFNULL(e.field_495, 0)
      )-(
        select 
          SUM(
            (
              (msq.field_352 + 0)-(msq.field_353 + 0)
            )
          ) 
        from 
          app_entity_39 msq 
        where 
          msq.field_365 = e.id 
        limit 
          1
      ), 
      (
        IFNULL(
          (
            select 
              SUM(
                (
                  msq.field_439 *(msq.field_440 + 0)
                )
              ) 
            from 
              app_entity_44 msq 
            where 
              msq.field_437 = e.id 
            limit 
              1
          ), 
          0
        )+ IFNULL(e.field_324, 0)+ IFNULL(
          (
            select 
              SUM(msq.field_488) 
            from 
              app_entity_47 msq 
            where 
              msq.field_490 = e.id 
            limit 
              1
          ), 
          0
        )+ IFNULL(
          (
            select 
              SUM(
                (
                  IFNULL(
                    (msq.field_493 + 0), 
                    0
                  )+ IFNULL(
                    (
                      IFNULL(
                        (msq.field_498 + 0), 
                        0
                      )* IFNULL(
                        (msq.field_500 + 0), 
                        0
                      )
                    ), 
                    0
                  )+ IFNULL(
                    (
                      (msq.field_499 + 0)* 20
                    ), 
                    0
                  )+ IFNULL(
                    (
                      IFNULL(
                        (msq.field_525 + 0), 
                        0
                      )* IFNULL(
                        (msq.field_526 + 0), 
                        0
                      )
                    ), 
                    0
                  )+ IFNULL(
                    (
                      (
                        IFNULL(msq.field_537, 0)* IFNULL(
                          (msq.field_529 + 0), 
                          0
                        )
                      ) +(
                        IFNULL(msq.field_538, 0)* IFNULL(
                          (msq.field_531 + 0), 
                          0
                        )
                      ) +(
                        IFNULL(msq.field_539, 0)* IFNULL(
                          (msq.field_533 + 0), 
                          0
                        )
                      ) +(
                        IFNULL(msq.field_540, 0)* IFNULL(
                          (msq.field_535 + 0), 
                          0
                        )
                      ) +(
                        IFNULL(
                          (msq.field_542 + 0), 
                          0
                        )* IFNULL(msq.field_543, 0)
                      )
                    ), 
                    0
                  )
                )
              ) 
            from 
              app_entity_30 msq 
            where 
              parent_item_id = e.id 
            limit 
              1
          ), 
          0
        )+ IFNULL(
          (
            select 
              SUM(
                (
                  (msq.field_417 + 0)* msq.field_418
                )
              ) 
            from 
              app_entity_40 msq 
            where 
              msq.field_545 = e.id 
            limit 
              1
          ), 
          0
        )+ IFNULL(e.field_548, 0)- IFNULL(e.field_495, 0)
      )
    )
  ) as field_343, 
  IFNULL(
    (
      select 
        SUM(
          (
            (msq.field_352 + 0)-(msq.field_353 + 0)
          )
        ) 
      from 
        app_entity_39 msq 
      where 
        msq.field_365 = e.id 
      limit 
        1
    ), 
    0
  ) as field_367, 
  IFNULL(
    (
      select 
        SUM(
          (
            msq.field_439 *(msq.field_440 + 0)
          )
        ) 
      from 
        app_entity_44 msq 
      where 
        msq.field_437 = e.id 
      limit 
        1
    ), 
    0
  ) as field_471, 
  IFNULL(
    (
      select 
        SUM(msq.field_488) 
      from 
        app_entity_47 msq 
      where 
        msq.field_490 = e.id 
      limit 
        1
    ), 
    0
  ) as field_491, 
  IFNULL(
    (
      select 
        SUM(
          (
            IFNULL(
              (msq.field_493 + 0), 
              0
            )+ IFNULL(
              (
                IFNULL(
                  (msq.field_498 + 0), 
                  0
                )* IFNULL(
                  (msq.field_500 + 0), 
                  0
                )
              ), 
              0
            )+ IFNULL(
              (
                (msq.field_499 + 0)* 20
              ), 
              0
            )+ IFNULL(
              (
                IFNULL(
                  (msq.field_525 + 0), 
                  0
                )* IFNULL(
                  (msq.field_526 + 0), 
                  0
                )
              ), 
              0
            )+ IFNULL(
              (
                (
                  IFNULL(msq.field_537, 0)* IFNULL(
                    (msq.field_529 + 0), 
                    0
                  )
                ) +(
                  IFNULL(msq.field_538, 0)* IFNULL(
                    (msq.field_531 + 0), 
                    0
                  )
                ) +(
                  IFNULL(msq.field_539, 0)* IFNULL(
                    (msq.field_533 + 0), 
                    0
                  )
                ) +(
                  IFNULL(msq.field_540, 0)* IFNULL(
                    (msq.field_535 + 0), 
                    0
                  )
                ) +(
                  IFNULL(
                    (msq.field_542 + 0), 
                    0
                  )* IFNULL(msq.field_543, 0)
                )
              ), 
              0
            )
          )
        ) 
      from 
        app_entity_30 msq 
      where 
        parent_item_id = e.id 
      limit 
        1
    ), 
    0
  ) as field_494, 
  IFNULL(
    (
      select 
        SUM(
          (
            (msq.field_417 + 0)* msq.field_418
          )
        ) 
      from 
        app_entity_40 msq 
      where 
        msq.field_545 = e.id 
      limit 
        1
    ), 
    0
  ) as field_547, 
  rukovoditel_days_diff(
    e.field_544, 1655745022, '', '', ''
  ) as field_622 
from 
  app_entity_29 e 
where 
  e.id > 0 
having 
  (
    (field_343 = 0)
  )
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: оптимизация autostatus

Сообщение support »

Возможно и можно оптимизировать, но надо понимать на какой странице происходит данный запрос. Вот в версии 3.2 будут сови логи, там будет понятно где возникает проблема
https://vk.com/rukovoditel_project?w=wall-80230319_1477
Vladzimir
Сообщения: 102
Зарегистрирован: 05 май 2022, 20:12
Имя: Влад Зимир
Откуда: Kyiv

Re: оптимизация autostatus

Сообщение Vladzimir »

Я думаю достаточно будет проставить индексы на поле, везде где "where msq.field_"
yuranikspb
Сообщения: 10
Зарегистрирован: 10 июл 2018, 21:23
Имя: Юрий
Откуда: Спб

Re: оптимизация autostatus

Сообщение yuranikspb »

Vladzimir писал(а): 21 июн 2022, 18:22 Я думаю достаточно будет проставить индексы на поле, везде где "where msq.field_"
индексы я могу поставить в mysql
а в crm то не поставить
Vladzimir
Сообщения: 102
Зарегистрирован: 05 май 2022, 20:12
Имя: Влад Зимир
Откуда: Kyiv

Re: оптимизация autostatus

Сообщение Vladzimir »

А вам "шашечки" или "ехать"?
nruslan2
Сообщения: 2435
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow

Re: оптимизация autostatus

Сообщение nruslan2 »

имхо совет: выкинуть данный код! и поле sql! и использовать поле php!
Ответить