SELECT 
  p.*, 
  d.*, 
  images.promotion_image_id 
FROM 
  cscart_promotions as p 
  LEFT JOIN cscart_promotion_descriptions as d ON p.promotion_id = d.promotion_id 
  AND d.lang_code = 'vn' 
  LEFT JOIN cscart_promotion_images AS images ON images.promotion_id = p.promotion_id 
  AND images.lang_code = 'vn' 
WHERE 
  p.promotion_id = 36

Query time 0.00023

JSON explain

{
  "query_block": {
    "select_id": 1,
    "const_condition": "1",
    "nested_loop": [
      {
        "table": {
          "table_name": "p",
          "access_type": "const",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "3",
          "used_key_parts": ["promotion_id"],
          "ref": ["const"],
          "rows": 1,
          "filtered": 100
        }
      },
      {
        "table": {
          "table_name": "d",
          "access_type": "const",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "9",
          "used_key_parts": ["promotion_id", "lang_code"],
          "ref": ["const", "const"],
          "rows": 1,
          "filtered": 100
        }
      },
      {
        "table": {
          "table_name": "images",
          "access_type": "const",
          "possible_keys": ["promo"],
          "key": "promo",
          "key_length": "10",
          "used_key_parts": ["promotion_id", "lang_code"],
          "ref": ["const", "const"],
          "rows": 1,
          "filtered": 100
        }
      }
    ]
  }
}

Result

promotion_id company_id conditions bonuses to_date from_date priority stop stop_other_rules zone conditions_hash status number_of_usages users_conditions_hash ref_promo_data name short_description detailed_description lang_code promotion_image_id
36 0 a:2:{s:3:"set";s:3:"all";s:9:"set_value";s:1:"1";} a:0:{} 0 0 0 N N catalog A 0 Lễ hội Trung Thu <p>Trung Thu đoàn viên </p> vn 35