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 (
    88304, 88305, 89712, 89713, 88302, 88303, 
    89708, 89709, 89710, 89711, 88300, 
    88301, 89706, 89707, 89701, 89702, 
    88296, 88297, 89699, 89700, 88381, 
    88382, 88377, 88378, 88379, 88380, 
    88375, 88376, 88370, 88371, 88368, 
    88369, 94387, 94396, 94397, 94399, 
    94400, 94423, 94424, 94858, 94859, 
    94867, 94868, 94870, 94871, 94896, 
    94897, 94906, 94907, 94916, 94917, 
    94919, 94920, 94945, 94946, 96250, 
    96251, 96260, 96261, 96263, 96264, 
    96290, 96291, 96576, 96581, 96598, 
    96599, 100550, 100559, 100560, 100562, 
    100563, 100589, 100590, 101579, 101580, 
    101589, 101590, 101592, 101593, 101619, 
    101620, 101624
  )

Query time 0.00086

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "1.05"
    },
    "nested_loop": [
      {
        "table": {
          "table_name": "f",
          "access_type": "ALL",
          "possible_keys": [
            "idx_group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "0.25",
            "eval_cost": "0.10",
            "prefix_cost": "0.35",
            "data_read_per_join": "104"
          },
          "used_columns": [
            "feature_id",
            "purpose",
            "group_id"
          ]
        }
      },
      {
        "table": {
          "table_name": "g",
          "access_type": "eq_ref",
          "possible_keys": [
            "PRIMARY"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "id"
          ],
          "key_length": "3",
          "ref": [
            "nuie_scalesta_net.f.group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "0.25",
            "eval_cost": "0.10",
            "prefix_cost": "0.70",
            "data_read_per_join": "400"
          },
          "used_columns": [
            "id",
            "code"
          ]
        }
      },
      {
        "table": {
          "table_name": "p",
          "access_type": "ref",
          "possible_keys": [
            "PRIMARY",
            "idx_group_id"
          ],
          "key": "idx_group_id",
          "used_key_parts": [
            "group_id"
          ],
          "key_length": "3",
          "ref": [
            "nuie_scalesta_net.f.group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "index_condition": "(`nuie_scalesta_net`.`p`.`product_id` in (88304,88305,89712,89713,88302,88303,89708,89709,89710,89711,88300,88301,89706,89707,89701,89702,88296,88297,89699,89700,88381,88382,88377,88378,88379,88380,88375,88376,88370,88371,88368,88369,94387,94396,94397,94399,94400,94423,94424,94858,94859,94867,94868,94870,94871,94896,94897,94906,94907,94916,94917,94919,94920,94945,94946,96250,96251,96260,96261,96263,96264,96290,96291,96576,96581,96598,96599,100550,100559,100560,100562,100563,100589,100590,101579,101580,101589,101590,101592,101593,101619,101620,101624))",
          "cost_info": {
            "read_cost": "0.25",
            "eval_cost": "0.10",
            "prefix_cost": "1.05",
            "data_read_per_join": "16"
          },
          "used_columns": [
            "product_id",
            "parent_product_id",
            "group_id"
          ]
        }
      }
    ]
  }
}