SELECT 
  cscart_payments.*, 
  cscart_payment_descriptions.*, 
  IF (
    ISNULL(cscart_addons.status), 
    "A", 
    cscart_addons.status
  ) AS processor_status, 
  cscart_payment_processors.type AS processor_type, 
  cscart_payment_processors.processor_script AS processor_script 
FROM 
  cscart_payments 
  LEFT JOIN cscart_payment_descriptions ON cscart_payment_descriptions.payment_id = cscart_payments.payment_id 
  AND cscart_payment_descriptions.lang_code = 'ru' 
  LEFT JOIN cscart_payment_processors ON cscart_payment_processors.processor_id = cscart_payments.processor_id 
  LEFT JOIN cscart_addons ON cscart_payment_processors.addon = cscart_addons.addon 
  LEFT JOIN cscart_storefronts_payments AS storefronts_payments ON storefronts_payments.payment_id = cscart_payments.payment_id 
WHERE 
  cscart_payments.status = 'A' 
  AND (
    cscart_payments.usergroup_ids = '' 
    OR FIND_IN_SET(
      0, cscart_payments.usergroup_ids
    ) 
    OR FIND_IN_SET(
      1, cscart_payments.usergroup_ids
    )
  ) 
  AND (
    storefronts_payments.storefront_id = 1 
    OR storefronts_payments.storefront_id IS NULL
  ) 
HAVING 
  processor_status = 'A' 
ORDER BY 
  cscart_payments.position

Query time 0.00294

JSON explain

{
  "query_block": {
    "select_id": 1,
    "having_condition": "processor_status = 'A'",
    "filesort": {
      "sort_key": "cscart_payments.position",
      "temporary_table": {
        "table": {
          "table_name": "cscart_payments",
          "access_type": "ALL",
          "possible_keys": ["c_status"],
          "rows": 9,
          "filtered": 100,
          "attached_condition": "cscart_payments.`status` = 'A' and (cscart_payments.usergroup_ids = '' or find_in_set(0,cscart_payments.usergroup_ids) or find_in_set(1,cscart_payments.usergroup_ids))"
        },
        "table": {
          "table_name": "cscart_payment_descriptions",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "9",
          "used_key_parts": ["payment_id", "lang_code"],
          "ref": ["noframes_angrybeaver.cscart_payments.payment_id", "const"],
          "rows": 1,
          "filtered": 100,
          "attached_condition": "trigcond(cscart_payment_descriptions.lang_code = 'ru')"
        },
        "table": {
          "table_name": "cscart_payment_processors",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "3",
          "used_key_parts": ["processor_id"],
          "ref": ["noframes_angrybeaver.cscart_payments.processor_id"],
          "rows": 1,
          "filtered": 100
        },
        "table": {
          "table_name": "cscart_addons",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "98",
          "used_key_parts": ["addon"],
          "ref": ["noframes_angrybeaver.cscart_payment_processors.addon"],
          "rows": 1,
          "filtered": 100,
          "attached_condition": "trigcond(trigcond(cscart_payment_processors.addon is not null))"
        },
        "block-nl-join": {
          "table": {
            "table_name": "storefronts_payments",
            "access_type": "index",
            "key": "PRIMARY",
            "key_length": "8",
            "used_key_parts": ["storefront_id", "payment_id"],
            "rows": 17,
            "filtered": 100,
            "using_index": true
          },
          "buffer_type": "flat",
          "buffer_size": "75Kb",
          "join_type": "BNL",
          "attached_condition": "trigcond(storefronts_payments.storefront_id = 1 or storefronts_payments.storefront_id is null) and trigcond(storefronts_payments.payment_id = cscart_payments.payment_id)"
        }
      }
    }
  }
}

Result

payment_id company_id usergroup_ids position status template processor_id processor_params a_surcharge p_surcharge tax_ids localization payment_category send_receipt payment description instructions surcharge_title lang_code processor_status processor_type processor_script
1 1 0 10 A views/orders/components/payments/cc_outside.tpl 133 a:13:{s:23:"send_prepayment_receipt";s:1:"Y";s:25:"send_full_payment_receipt";s:1:"N";s:19:"send_refund_receipt";s:1:"N";s:20:"final_success_status";s:1:"C";s:11:"ffd_version";s:3:"1.2";s:10:"merchantid";s:9:"No-frames";s:9:"password1";s:20:"his769FkHImI7ZHQvCi7";s:9:"password2";s:20:"xUDYQLsA7Vee2wL1wZ98";s:7:"details";s:0:"";s:4:"mode";s:4:"live";s:10:"commission";s:8:"customer";s:14:"payment_method";s:12:"BankCardPSBR";s:8:"statuses";a:2:{s:4:"paid";s:1:"P";s:5:"final";s:1:"C";}} 0.000 0.000 12 tab1 dont_send Оплата картой онлайн ru A P robokassa.php
18 1 0 30 A addons/rus_payments/views/orders/components/payments/account_payment.tpl 132 a:19:{s:23:"send_prepayment_receipt";s:1:"Y";s:25:"send_full_payment_receipt";s:1:"Y";s:19:"send_refund_receipt";s:1:"N";s:20:"final_success_status";s:1:"C";s:11:"ffd_version";s:3:"1.2";s:22:"account_recepient_name";s:98:"ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "БЬЮТИХОУМ"";s:15:"account_address";s:118:"109431, город Москва, Привольная улица, дом 70 корпус 1, эт 2 пом XII ком 3";s:13:"account_phone";s:17:"+7(495) 788-78-40";s:11:"account_kpp";s:9:"772101001";s:11:"account_inn";s:10:"7751135477";s:15:"account_current";s:20:"40702810838000133133";s:12:"account_bank";s:23:"ПАО Сбербанк";s:11:"account_bik";s:9:"044525225";s:11:"account_cor";s:20:"30101810400000000225";s:15:"account_enabled";s:1:"Y";s:19:"account_print_width";s:3:"120";s:20:"account_print_height";s:3:"120";s:20:"account_order_status";s:1:"O";s:14:"fields_account";a:6:{s:21:"organization_customer";s:0:"";s:7:"address";s:0:"";s:15:"zip_postal_code";s:0:"";s:5:"phone";s:0:"";s:12:"inn_customer";s:0:"";s:12:"bank_details";s:0:"";}} 0.000 20.000 7 tab3 dont_send Выставить счет НДС ru A P account.php
2 1 0 40 A views/orders/components/payments/phone.tpl 0 0.000 0.000 tab3 dont_send Обсудить по телефону Наш менеджер позвонит вам. ru A