SELECT 
  tmall_payments.*, 
  tmall_payment_descriptions.*, 
  IF (
    ISNULL(tmall_addons.status), 
    "A", 
    tmall_addons.status
  ) AS processor_status, 
  tmall_payment_processors.type AS processor_type, 
  tmall_payment_processors.processor_script AS processor_script 
FROM 
  tmall_payments 
  LEFT JOIN tmall_payment_descriptions ON tmall_payment_descriptions.payment_id = tmall_payments.payment_id 
  AND tmall_payment_descriptions.lang_code = 'en' 
  LEFT JOIN tmall_payment_processors ON tmall_payment_processors.processor_id = tmall_payments.processor_id 
  LEFT JOIN tmall_addons ON tmall_payment_processors.addon = tmall_addons.addon 
  LEFT JOIN tmall_storefronts_payments AS storefronts_payments ON storefronts_payments.payment_id = tmall_payments.payment_id 
WHERE 
  tmall_payments.status = 'A' 
  AND (
    tmall_payments.usergroup_ids = '' 
    OR FIND_IN_SET(0, tmall_payments.usergroup_ids) 
    OR FIND_IN_SET(1, tmall_payments.usergroup_ids)
  ) 
  AND (
    storefronts_payments.storefront_id = 1 
    OR storefronts_payments.storefront_id IS NULL
  ) 
HAVING 
  processor_status = 'A' 
ORDER BY 
  tmall_payments.position

Query time 0.00790

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost": 0.058895907,
    "having_condition": "processor_status = 'A'",
    "nested_loop": [
      {
        "table": {
          "table_name": "storefronts_payments",
          "access_type": "system",
          "possible_keys": ["PRIMARY", "idx_storefront_id"],
          "rows": 0,
          "filtered": 0,
          "const_row_not_found": true
        }
      },
      {
        "read_sorted_file": {
          "filesort": {
            "sort_key": "tmall_payments.position",
            "table": {
              "table_name": "tmall_payments",
              "access_type": "ALL",
              "possible_keys": ["c_status"],
              "loops": 1,
              "rows": 8,
              "cost": 0.01128684,
              "filtered": 100,
              "attached_condition": "tmall_payments.`status` = 'A' and (tmall_payments.usergroup_ids = '' or find_in_set(0,tmall_payments.usergroup_ids) or find_in_set(1,tmall_payments.usergroup_ids))"
            }
          }
        }
      },
      {
        "table": {
          "table_name": "tmall_payment_descriptions",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "9",
          "used_key_parts": ["payment_id", "lang_code"],
          "ref": ["tmall.tmall_payments.payment_id", "const"],
          "loops": 8,
          "rows": 1,
          "cost": 0.014037008,
          "filtered": 100,
          "attached_condition": "trigcond(tmall_payment_descriptions.lang_code = 'en')"
        }
      },
      {
        "table": {
          "table_name": "tmall_payment_processors",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "3",
          "used_key_parts": ["processor_id"],
          "ref": ["tmall.tmall_payments.processor_id"],
          "loops": 8,
          "rows": 1,
          "cost": 0.014037008,
          "filtered": 100
        }
      },
      {
        "table": {
          "table_name": "tmall_addons",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "98",
          "used_key_parts": ["addon"],
          "ref": ["tmall.tmall_payment_processors.addon"],
          "loops": 8,
          "rows": 1,
          "cost": 0.014446608,
          "filtered": 100,
          "attached_condition": "trigcond(trigcond(tmall_payment_processors.addon is not null))"
        }
      }
    ]
  }
}

Result

payment_id company_id usergroup_ids position status template processor_id processor_params a_surcharge p_surcharge tax_ids localization payment_category payment description instructions surcharge_title lang_code processor_status processor_type processor_script
1 0 0 10 A views/orders/components/payments/cc.tpl 0 0.000 0.000 tab1 Credit card Visa, Mastercard, etc... en A
2 0 0 40 A views/orders/components/payments/phone.tpl 0 0.000 0.000 tab3 Phone ordering Call +16175550123 <h2>When I should use phone ordering?</h2><p>Order by phone is useful when regular payment methods like credit card are unavailable or considered insecure.</p><p>Our operators are happy to take your order per phone every business day from 9 a.m. to 5 p.m. UTC.</p> en A