SELECT 
  cscart_payments.payment_id, 
  cscart_payments.a_surcharge, 
  cscart_payments.p_surcharge, 
  cscart_payments.payment_category, 
  cscart_payment_descriptions.*, 
  cscart_payment_processors.type AS processor_type, 
  cscart_payments.status 
FROM 
  cscart_payments 
  LEFT JOIN cscart_payment_descriptions ON cscart_payments.payment_id = cscart_payment_descriptions.payment_id 
  AND cscart_payment_descriptions.lang_code = 'vi' 
  LEFT JOIN cscart_payment_processors ON cscart_payment_processors.processor_id = cscart_payments.processor_id 
WHERE 
  cscart_payments.processor_id = 101 
ORDER BY 
  cscart_payments.position

Query time 0.00053

JSON explain

{
  "query_block": {
    "select_id": 1,
    "read_sorted_file": {
      "filesort": {
        "sort_key": "cscart_payments.position",
        "table": {
          "table_name": "cscart_payments",
          "access_type": "ALL",
          "rows": 9,
          "filtered": 100,
          "attached_condition": "cscart_payments.processor_id = 101"
        }
      }
    },
    "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": ["vietpom_dev.cscart_payments.payment_id", "const"],
      "rows": 1,
      "filtered": 100,
      "attached_condition": "trigcond(cscart_payment_descriptions.lang_code = 'vi')"
    },
    "table": {
      "table_name": "cscart_payment_processors",
      "access_type": "const",
      "possible_keys": ["PRIMARY"],
      "key": "PRIMARY",
      "key_length": "3",
      "used_key_parts": ["processor_id"],
      "ref": ["const"],
      "rows": 1,
      "filtered": 100
    }
  }
}