SELECT 
  f.feature_id, 
  f.purpose, 
  p.product_id, 
  p.parent_product_id, 
  g.id, 
  g.code 
FROM 
  cscart_product_variation_group_features AS f 
  INNER JOIN cscart_product_variation_groups AS g ON f.group_id = g.id 
  INNER JOIN cscart_product_variation_group_products AS p ON f.group_id = p.group_id 
WHERE 
  p.product_id IN (
    350592, 351862, 354203, 356480, 356560, 
    352897, 356801, 358945, 349757, 356497, 
    356655, 353178, 356621, 350319, 357585, 
    359008, 359423, 357930, 352714, 356443, 
    356820, 356985, 352282, 352085, 354417, 
    355651, 350568, 357383, 353410, 354653, 
    350662, 350975, 351747, 351892, 352001, 
    352747, 357301, 350152, 350702, 352610, 
    353056, 352021, 354389, 354942, 359333, 
    350645, 352146, 351489, 351559, 354382, 
    353005, 353543, 354867, 356810, 350934, 
    358064, 350921, 351928, 357077, 359076, 
    351691, 354804, 355599, 354563, 357575, 
    350464, 349744, 354771, 349701, 349734, 
    349789, 352000, 352373, 352559, 354400, 
    355170, 357736, 358536, 358989, 359320, 
    350473, 353799, 358182, 352578, 353895, 
    356669, 349735, 353312, 353424, 351936, 
    358007, 350147, 350705, 352078, 354094, 
    354802, 356694, 351931, 353703, 350055
  )

Query time 0.00083

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "430.18"
    },
    "nested_loop": [
      {
        "table": {
          "table_name": "p",
          "access_type": "range",
          "possible_keys": [
            "PRIMARY",
            "idx_group_id"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "product_id"
          ],
          "key_length": "3",
          "rows_examined_per_scan": 100,
          "rows_produced_per_join": 100,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "120.12",
            "eval_cost": "20.00",
            "prefix_cost": "140.12",
            "data_read_per_join": "1K"
          },
          "used_columns": [
            "product_id",
            "parent_product_id",
            "group_id"
          ],
          "attached_condition": "(`webmarco`.`p`.`product_id` in (350592,351862,354203,356480,356560,352897,356801,358945,349757,356497,356655,353178,356621,350319,357585,359008,359423,357930,352714,356443,356820,356985,352282,352085,354417,355651,350568,357383,353410,354653,350662,350975,351747,351892,352001,352747,357301,350152,350702,352610,353056,352021,354389,354942,359333,350645,352146,351489,351559,354382,353005,353543,354867,356810,350934,358064,350921,351928,357077,359076,351691,354804,355599,354563,357575,350464,349744,354771,349701,349734,349789,352000,352373,352559,354400,355170,357736,358536,358989,359320,350473,353799,358182,352578,353895,356669,349735,353312,353424,351936,358007,350147,350705,352078,354094,354802,356694,351931,353703,350055))"
        }
      },
      {
        "table": {
          "table_name": "g",
          "access_type": "eq_ref",
          "possible_keys": [
            "PRIMARY"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "id"
          ],
          "key_length": "3",
          "ref": [
            "webmarco.p.group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 100,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "100.00",
            "eval_cost": "20.00",
            "prefix_cost": "260.12",
            "data_read_per_join": "39K"
          },
          "used_columns": [
            "id",
            "code"
          ]
        }
      },
      {
        "table": {
          "table_name": "f",
          "access_type": "ref",
          "possible_keys": [
            "idx_group_id"
          ],
          "key": "idx_group_id",
          "used_key_parts": [
            "group_id"
          ],
          "key_length": "3",
          "ref": [
            "webmarco.p.group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 141,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "141.72",
            "eval_cost": "28.34",
            "prefix_cost": "430.18",
            "data_read_per_join": "14K"
          },
          "used_columns": [
            "feature_id",
            "purpose",
            "group_id"
          ]
        }
      }
    ]
  }
}