SELECT 
  pfv.feature_id, 
  pfv.product_id, 
  pfv.variant_id, 
  gp.group_id 
FROM 
  cscart_product_features_values AS pfv 
  INNER JOIN cscart_product_variation_group_products AS gp ON pfv.product_id = gp.product_id 
  INNER JOIN cscart_product_variation_group_features AS gpf ON gpf.group_id = gp.group_id 
  AND gpf.feature_id = pfv.feature_id 
WHERE 
  pfv.lang_code = 'en' 
  AND gp.group_id IN (21, 20, 18, 16, 15)

Query time 0.00077

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "45.46"
    },
    "nested_loop": [
      {
        "table": {
          "table_name": "gpf",
          "access_type": "index",
          "possible_keys": [
            "PRIMARY",
            "idx_group_id"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "feature_id",
            "group_id"
          ],
          "key_length": "6",
          "rows_examined_per_scan": 13,
          "rows_produced_per_join": 6,
          "filtered": "46.15",
          "using_index": true,
          "cost_info": {
            "read_cost": "3.51",
            "eval_cost": "1.20",
            "prefix_cost": "4.71",
            "data_read_per_join": "624"
          },
          "used_columns": [
            "feature_id",
            "group_id"
          ],
          "attached_condition": "(`atulecarter_atul_demo1`.`gpf`.`group_id` in (21,20,18,16,15))"
        }
      },
      {
        "table": {
          "table_name": "pfv",
          "access_type": "ref",
          "possible_keys": [
            "PRIMARY",
            "fl",
            "lang_code",
            "product_id",
            "fpl",
            "idx_product_feature_variant_id"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "feature_id"
          ],
          "key_length": "3",
          "ref": [
            "atulecarter_atul_demo1.gpf.feature_id"
          ],
          "rows_examined_per_scan": 7,
          "rows_produced_per_join": 20,
          "filtered": "48.99",
          "using_index": true,
          "cost_info": {
            "read_cost": "7.66",
            "eval_cost": "4.12",
            "prefix_cost": "20.77",
            "data_read_per_join": "15K"
          },
          "used_columns": [
            "feature_id",
            "product_id",
            "variant_id",
            "lang_code"
          ],
          "attached_condition": "(`atulecarter_atul_demo1`.`pfv`.`lang_code` = 'en')"
        }
      },
      {
        "table": {
          "table_name": "gp",
          "access_type": "eq_ref",
          "possible_keys": [
            "PRIMARY",
            "idx_group_id"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "product_id",
            "group_id"
          ],
          "key_length": "6",
          "ref": [
            "atulecarter_atul_demo1.pfv.product_id",
            "atulecarter_atul_demo1.gpf.group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 20,
          "filtered": "100.00",
          "using_index": true,
          "cost_info": {
            "read_cost": "20.58",
            "eval_cost": "4.12",
            "prefix_cost": "45.46",
            "data_read_per_join": "329"
          },
          "used_columns": [
            "product_id",
            "group_id"
          ]
        }
      }
    ]
  }
}

Result

feature_id product_id variant_id group_id
548 12 1194 16
548 324 1195 16
548 325 1194 16
548 326 1195 16
549 12 1198 16
549 324 1198 16
549 325 1199 16
549 326 1199 16
550 317 1202 15
550 319 1203 15
550 320 1204 15
550 321 1205 15
550 322 1206 15
550 323 1208 15
550 318 1202 18
550 329 1202 18
550 330 1203 18
550 331 1203 18
551 318 1217 18
551 329 1218 18
551 330 1217 18
551 331 1218 18
551 334 1217 20
551 335 1218 20
552 336 1219 21
552 337 1220 21
552 338 1221 21
552 339 1222 21