SELECT 
  vi_payments.*, 
  vi_payment_descriptions.*, 
  IF (
    ISNULL(vi_addons.status), 
    "A", 
    vi_addons.status
  ) AS processor_status, 
  vi_payment_processors.type AS processor_type, 
  vi_payment_processors.processor_script AS processor_script 
FROM 
  vi_payments 
  LEFT JOIN vi_payment_descriptions ON vi_payment_descriptions.payment_id = vi_payments.payment_id 
  AND vi_payment_descriptions.lang_code = 'en' 
  LEFT JOIN vi_payment_processors ON vi_payment_processors.processor_id = vi_payments.processor_id 
  LEFT JOIN vi_addons ON vi_payment_processors.addon = vi_addons.addon 
  LEFT JOIN vi_storefronts_payments AS storefronts_payments ON storefronts_payments.payment_id = vi_payments.payment_id 
WHERE 
  vi_payments.status = 'A' 
  AND (
    storefronts_payments.storefront_id = 1 
    OR storefronts_payments.storefront_id IS NULL
  ) 
  AND vi_payment_processors.processor_script IN ('stripe.php') 
HAVING 
  processor_status = 'A' 
ORDER BY 
  vi_payments.position

Query time 0.00029

JSON explain

{
  "query_block": {
    "select_id": 1,
    "having_condition": "processor_status = 'A'",
    "filesort": {
      "sort_key": "vi_payments.position",
      "temporary_table": {
        "nested_loop": [
          {
            "table": {
              "table_name": "vi_payments",
              "access_type": "ALL",
              "rows": 8,
              "filtered": 100,
              "attached_condition": "vi_payments.`status` = 'A'"
            }
          },
          {
            "table": {
              "table_name": "vi_payment_descriptions",
              "access_type": "eq_ref",
              "possible_keys": ["PRIMARY"],
              "key": "PRIMARY",
              "key_length": "9",
              "used_key_parts": ["payment_id", "lang_code"],
              "ref": ["devvipiriscom.vi_payments.payment_id", "const"],
              "rows": 1,
              "filtered": 100,
              "attached_condition": "trigcond(vi_payment_descriptions.lang_code = 'en')"
            }
          },
          {
            "table": {
              "table_name": "vi_payment_processors",
              "access_type": "eq_ref",
              "possible_keys": ["PRIMARY"],
              "key": "PRIMARY",
              "key_length": "3",
              "used_key_parts": ["processor_id"],
              "ref": ["devvipiriscom.vi_payments.processor_id"],
              "rows": 1,
              "filtered": 100,
              "attached_condition": "vi_payment_processors.processor_script = 'stripe.php'"
            }
          },
          {
            "table": {
              "table_name": "vi_addons",
              "access_type": "eq_ref",
              "possible_keys": ["PRIMARY"],
              "key": "PRIMARY",
              "key_length": "98",
              "used_key_parts": ["addon"],
              "ref": ["devvipiriscom.vi_payment_processors.addon"],
              "rows": 1,
              "filtered": 100
            }
          },
          {
            "block-nl-join": {
              "table": {
                "table_name": "storefronts_payments",
                "access_type": "index",
                "key": "PRIMARY",
                "key_length": "8",
                "used_key_parts": ["storefront_id", "payment_id"],
                "rows": 8,
                "filtered": 100,
                "using_index": true
              },
              "buffer_type": "flat",
              "buffer_size": "64Kb",
              "join_type": "BNL",
              "attached_condition": "trigcond(storefronts_payments.storefront_id = 1 or storefronts_payments.storefront_id is null) and trigcond(storefronts_payments.payment_id = vi_payments.payment_id)"
            }
          }
        ]
      }
    }
  }
}